sm4 加密 .net

前几年做这个国标加解密的对接,发现.net和Java底层不同导致加密的结果不一样。

最近发现网络有大神编写的专门的dll来解决.net 上sm4加解密问题。

这里引用的是 KYSharp.SM.dll;(PS:网上看到还有诸如Sw.ChinaEncryptSM的)

using KYSharp.SM;

String plainText = "{\"order_status\":\"3\",\"name\":\"测试人员\",\"idcard_value\":\"330100********0000\",\"idcard_type\":\"01\"}";

SM4Utils sm4 = new SM4Utils();
sm4.secretKey = "726be1646879423e26eb7977c4d80c48";
sm4.hexString = true;

System.Console.Out.WriteLine("ECB模式");
String cipherText = sm4.Encrypt_ECB(plainText);
System.Console.Out.WriteLine("密文: " + cipherText);
System.Console.Out.WriteLine("");

plainText = sm4.Decrypt_ECB(cipherText);
System.Console.Out.WriteLine("明文: " + plainText);
System.Console.Out.WriteLine("");

Console.ReadLine();

这里注意的有 

一、sm4.hexString = true; //

((!hexString) ? Encoding.Default.GetBytes(secretKey) : Hex.Decode(secretKey));

二、iv=""        //iv默认为空

三、SM4加解密的模式分为 ECB 和BCB两种   使用时要注意类型

四、关于加解密乱码问题 如果发送端和接收端电脑主机的编码格式不一样 如一端是uft-8 另一端是GBK  则基本上都会乱码 (win系统  cmd窗口 输入chcp   936对应GBK,65001对应UTF-8)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值