# aes v1

### Repository

{% embed url="<https://github.com/metadiv-io/aes/tree/v1>" %}

### Installation

```bash
go get -u github.com/metadiv-io/aes
```

### Usage

#### String Encryption/Decryption

```go
package main

import (
    "fmt"
    "github.com/yourusername/aes"
)

func main() {
    // Your encryption key must be either 16, 24, or 32 bytes long
    key := "your-secret-key32-bytes-required!"
    
    // Encrypt a string
    plaintext := "Hello, World!"
    encrypted := aes.Encrypt.StringToBase64(plaintext, key)
    fmt.Printf("Encrypted: %s\n", encrypted)
    
    // Decrypt the string
    decrypted := aes.Decrypt.Base64ToString(encrypted, key)
    fmt.Printf("Decrypted: %s\n", decrypted)
}
```

#### Byte Slice Encryption/Decryption

```go
package main

import (
    "fmt"
    "github.com/yourusername/aes"
)

func main() {
    key := "your-secret-key32-bytes-required!"
    
    // Encrypt byte slice
    data := []byte{1, 2, 3, 4, 5}
    encrypted := aes.Encrypt.BytesToBytes(data, key)
    
    // Decrypt byte slice
    decrypted := aes.Decrypt.BytesToBytes(encrypted, key)
    fmt.Printf("Original: %v\n", data)
    fmt.Printf("Decrypted: %v\n", decrypted)
}
```

#### Working with Base64 Encoding

```go
package main

import (
    "fmt"
    "github.com/yourusername/aes"
)

func main() {
    key := "your-secret-key32-bytes-required!"
    
    // Encrypt string to base64
    plaintext := "Sensitive data"
    base64Encrypted := aes.Encrypt.StringToBase64(plaintext, key)
    fmt.Printf("Base64 Encrypted: %s\n", base64Encrypted)
    
    // Decrypt from base64
    decrypted := aes.Decrypt.Base64ToString(base64Encrypted, key)
    fmt.Printf("Decrypted: %s\n", decrypted)
}
```

### API Reference

#### Encryption Methods

* `BytesToBytes(src []byte, key string) []byte`
  * Encrypts a byte slice and returns encrypted bytes
* `BytesToString(src []byte, key string) string`
  * Encrypts a byte slice and returns encrypted string
* `BytesToBase64(src []byte, key string) string`
  * Encrypts a byte slice and returns base64 encoded string
* `StringToBytes(str, key string) []byte`
  * Encrypts a string and returns encrypted bytes
* `StringToString(str, key string) string`
  * Encrypts a string and returns encrypted string
* `StringToBase64(str, key string) string`
  * Encrypts a string and returns base64 encoded string

#### Decryption Methods

* `BytesToBytes(src []byte, key string) []byte`
  * Decrypts encrypted bytes and returns original bytes
* `BytesToString(src []byte, key string) string`
  * Decrypts encrypted bytes and returns original string
* `StringToBytes(encrypted string, key string) []byte`
  * Decrypts encrypted string and returns original bytes
* `StringToString(encrypted string, key string) string`
  * Decrypts encrypted string and returns original string
* `Base64ToBytes(src string, key string) []byte`
  * Decrypts base64 encoded string and returns original bytes
* `Base64ToString(encrypted string, key string) string`
  * Decrypts base64 encoded string and returns original
