Files
xgcl/gcltests/sm4_rightness.go
2026-05-27 23:03:00 +08:00

71 lines
2.1 KiB
Go

package gcltests
import (
"bytes"
"xdx.jelly/xgcl/sm/sm4"
)
func SM4MacTest() bool {
key := hexDecode("EEE8A0136E9DBC99F09E29EB5C79DAC1")
data := hexDecode("27B16EAF7D0341A1449A14A3D1BD69F9")
iv := hexDecode("6071A1EB4C784230A037909D33290854")
stdMac := hexDecode("F5CAF5A089C06942F83D1B9BB212F8AF")
mac, err := sm4.Mac(key, iv, data)
if err != nil {
return false
}
return bytes.Equal(mac, stdMac)
}
func SM4EncECB() bool {
key := hexDecode("C35242CC90CB75935A536F32149F5C35")
data := hexDecode("ECB57EE6D15BD06632CFE9FD09B822AF")
stdCipher := hexDecode("03D8C466A7C245971925E35540E9209F")
cipher, err := sm4.EncryptECB(nil, key, data)
if err != nil {
return false
}
return bytes.Equal(cipher, stdCipher)
}
func SM4DecECB() bool {
key := hexDecode("C35242CC90CB75935A536F32149F5C35")
stdData := hexDecode("ECB57EE6D15BD06632CFE9FD09B822AF")
cipher := hexDecode("03D8C466A7C245971925E35540E9209F")
data, err := sm4.DecryptECB(nil, key, cipher)
if err != nil {
return false
}
return bytes.Equal(data, stdData)
}
func SM4EncCBC() bool {
key := hexDecode("99CF573EFE8BE7F3277E800FF793F217")
iv := hexDecode("57C1AD66EFD690F45785A0176C42211B")
data := hexDecode("5B3ADAFFDC04A435D8582B5E04D22CB2920B85FBE0655E2C62DBF15EE6D9D2546D05CA85C78BF757AF9B10C3699879160E52A6060A9F910AA05CFA3F4A58B64D")
stdCipher := hexDecode("6A4320D8EC4A544116F5AD9C50EB33AC61A472F451AF2496E7C1761734907AC3A7D474CE21CFA8E64D5CB2D92659FCB4A7F8F5D5DAAFAEA0E3C6078176EB6DD3")
cipher, err := sm4.EncryptCBC(nil, iv, key, data)
if err != nil {
return false
}
return bytes.Equal(cipher, stdCipher)
}
func SM4DecCBC() bool {
key := hexDecode("99CF573EFE8BE7F3277E800FF793F217")
iv := hexDecode("57C1AD66EFD690F45785A0176C42211B")
stdData := hexDecode("5B3ADAFFDC04A435D8582B5E04D22CB2920B85FBE0655E2C62DBF15EE6D9D2546D05CA85C78BF757AF9B10C3699879160E52A6060A9F910AA05CFA3F4A58B64D")
cipher := hexDecode("6A4320D8EC4A544116F5AD9C50EB33AC61A472F451AF2496E7C1761734907AC3A7D474CE21CFA8E64D5CB2D92659FCB4A7F8F5D5DAAFAEA0E3C6078176EB6DD3")
data, err := sm4.DecryptCBC(nil, iv, key, cipher)
if err != nil {
return false
}
return bytes.Equal(data, stdData)
}