Files
monibuca/plugin/crypto/pkg/method/cryptor_test.go
2024-12-31 14:18:07 +08:00

93 lines
2.1 KiB
Go
Executable File

package method
import (
"encoding/base64"
"testing"
)
func TestStream(t *testing.T) {
encKey, _ := CreateKey(32)
macKey, _ := CreateKey(32)
plaintext := "0123456789012345"
pt := []byte(plaintext)
var cfg Key
cfg.EncKey = string(encKey)
cfg.MacKey = string(macKey)
c, _ := GetCryptor("stream", cfg)
t.Log("key", c.GetKey())
encryptData, err := c.Encrypt(pt)
t.Log("stream encrypt base64", base64.RawStdEncoding.EncodeToString(encryptData), err)
decryptData, err := c.Decrypt(encryptData)
t.Log("stream decrypt", string(decryptData), err)
if string(decryptData) != plaintext {
t.Error("decrypt error")
}
}
func TestAesCbc(t *testing.T) {
encKey, _ := CreateKey(16)
plaintext := "0123456789012345"
pt := []byte(plaintext)
var cfg Key
cfg.Key = string(encKey)
c, _ := GetCryptor("aes_cbc", cfg)
t.Log(c.GetKey())
encryptData, err := c.Encrypt(pt)
t.Log("aes_cbc encrypt base64", base64.RawStdEncoding.EncodeToString(encryptData), err)
decryptData, err := c.Decrypt(encryptData)
t.Log("aes_cbc decrypt", string(decryptData), err)
if string(decryptData) != plaintext {
t.Error("decrypt error")
}
}
func TestAesCtr(t *testing.T) {
encKey, _ := CreateKey(32)
iv, _ := CreateKey(16)
plaintext := "0123456789012345"
pt := []byte(plaintext)
var cfg Key
cfg.Key = string(encKey)
cfg.Iv = string(iv)
c, _ := GetCryptor("aes_ctr", cfg)
t.Log(c.GetKey())
encryptData, err := c.Encrypt(pt)
t.Log("aes_ctr encrypt ", string(encryptData), err)
decryptData, err := c.Decrypt(encryptData)
t.Log("aes_ctr decrypt", string(decryptData), err)
if string(decryptData) != plaintext {
t.Error("decrypt error")
}
}
func TestXor(t *testing.T) {
encKey, _ := CreateKey(32)
iv, _ := CreateKey(16)
plaintext := "0123456789012345"
pt := []byte(plaintext)
var cfg Key
cfg.Key = string(encKey)
cfg.Iv = string(iv)
c, _ := GetCryptor("xor", cfg)
t.Log(c.GetKey())
encryptData, err := c.Encrypt(pt)
t.Log("xor encrypt ", string(encryptData), "len", len(string(encryptData)), err)
decryptData, err := c.Decrypt(encryptData)
t.Log("xor decrypt", string(decryptData), err)
if string(decryptData) != plaintext {
t.Error("decrypt error")
}
}