52 lines
1.8 KiB
Go
52 lines
1.8 KiB
Go
package sm4
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestECBEecrypt(t *testing.T) {
|
|
decode := "hello"
|
|
//if err != nil {
|
|
// t.Fatalf("decode error: %v", err)
|
|
//}
|
|
key := []byte{87, 29, 256 - 6, 256 - 55, 256 - 87, 46, 256 - 74, 256 - 54, 32, 29, 15, 86, 18, 256 - 56, 256 - 55, 72}
|
|
//iv := []byte{34, 244, 188, 11, 120, 236, 119, 58, 191, 210, 3, 95, 85, 72, 172, 249}
|
|
plainText, err := ECBEncrypt(key, PKCS5Padding([]byte(decode), 16))
|
|
fmt.Println(string(PKCS5UnPadding(plainText)))
|
|
if err != nil {
|
|
t.Fatalf("ecb decrypt error: %v", err)
|
|
}
|
|
t.Log("ecb decrypt result:", string(PKCS5UnPadding(plainText)))
|
|
}
|
|
|
|
func TestECBDecrypt(t *testing.T) {
|
|
decode, err := base64.StdEncoding.DecodeString("dLXNaTFed24oFyQHcEiQLNOiF0PaoMjxo9iB0mL5bsQ9aeCM3+s3YqK9EnsbjHfep73gW/FphzMIQ51yOXzbxDhDZzAZWI/EgC8HT90Jr2OQVChC30nj+4TOAvlwld9M/2jn6lg4n/SDJUNUhUNPMw==")
|
|
if err != nil {
|
|
t.Fatalf("decode error: %v", err)
|
|
}
|
|
key := []byte{118, 58, 56, 11, 256 - 76, 81, 256 - 113, 256 - 29, 256 - 112, 256 - 63, 86, 16, 256 - 58, 256 - 54, 256 - 19, 58}
|
|
//iv := []byte{34, 244, 188, 11, 120, 236, 119, 58, 191, 210, 3, 95, 85, 72, 172, 249}
|
|
plainText, err := ECBDecrypt(key, decode)
|
|
fmt.Println(string(PKCS5UnPadding(plainText)))
|
|
if err != nil {
|
|
t.Fatalf("ecb decrypt error: %v", err)
|
|
}
|
|
t.Log("ecb decrypt result:", string(PKCS5UnPadding(plainText)))
|
|
}
|
|
|
|
func TestCFBEncrypt(t *testing.T) {
|
|
key := []byte{16, 101, 63, 34, 97, 41, 62, 49, 225, 208, 57, 189, 50, 158, 31, 100}
|
|
iv := []byte{34, 244, 188, 11, 120, 236, 119, 58, 191, 210, 3, 95, 85, 72, 172, 249}
|
|
decode, err := base64.StdEncoding.DecodeString("XO9I6k9h2zk/dHSK+zo3Dg==")
|
|
if err != nil {
|
|
t.Fatalf("decode error: %v", err)
|
|
}
|
|
bytes, err := OFBDecrypt(key, iv, decode)
|
|
if err != nil {
|
|
t.Fatalf("ecb decrypt error: %v", err)
|
|
}
|
|
t.Log("ecb decrypt result:", string(PKCS5UnPadding(bytes)))
|
|
}
|