gmsm icon indicating copy to clipboard operation
gmsm copied to clipboard

兼容性问题

Open zmrbak opened this issue 2 years ago • 0 comments

使用该库对字符串"C06FFCB5FDD40F45B444CDB4E1109DD9F404F85E57ECD0A0E4CF53FE400153E4"进行SM4解密。 解密密钥"NEWCAPECNEWCAPEC"

解密成功,代码如下: package main

import ( "crypto/cipher" "encoding/hex" "fmt"

"github.com/tjfoc/gmsm/sm4"

)

func sm4Dectypt(cipherText, key []byte) []byte { block, err := sm4.NewCipher(key) if err != nil { panic(err) } iv := []byte("-----------------------------------") //填入你的IV string blockMode := cipher.NewCBCDecrypter(block, iv) blockMode.CryptBlocks(cipherText, cipherText) // plainText := unpaddingLastGroup(cipherText) return cipherText }

func main() { key := []byte("-------------------") //key string data1, _ := hex.DecodeString("C06FFCB5FDD40F45B444CDB4E1109DD9F404F85E57ECD0A0E4CF53FE400153E4") //输入你想要的解密内容 string plainText := sm4Dectypt(data1, key) //解密 fmt.Printf("解密结果 = %s\n", plainText) }

但该密文不能用目前流行的C#库(BouncyCastle、Sw.ChinaEncryptSM、Vive.Crypto)解密。 //https://gitee.com/stoneson/Vive.Crypto //Vive.Crypto //无法解密 //var crypto = CryptoFactory.CreateSymmetric(SymmetricProviderType.SM4); //var text1 = crypto.Decrypt(cipherText, key);

        //Sw.ChinaEncryptSM
        //无法解密
        SM4Utils sM4Utils = new SM4Utils();
        sM4Utils.secretKey = key;
        var text2 = sM4Utils.Decrypt_CBC_Hex(cipherText);

如果对同样的密文,使用同样的密钥加密,使用这些库进行加密后的密文与此库可解密的密文不一致。

zmrbak avatar Mar 09 '23 02:03 zmrbak