同系列文章:
- 国家商用密码(一)SM2椭圆曲线公钥密码算法
- 国家商用密码(二)C#:基于BouncyCastle实现SM3密码杂凑算法
- 国家商用密码(三)C#:从HashAlgorithm类派生实现SM3密码杂凑算法
- 国家商用密码(四)开放动态库及演示程序
- 国家商用密码(五)基于SM2的软件授权码生成及校验
- 国家商用密码(六)椭圆曲线加密算法密钥生成器
- 国家商用密码(七)在Apache MINA上实现二进制流的SM4编解码器
- 国家商用密码(八)在Apache MINA上实现文本流的SM4编解码器
- 国家商用密码(九)在Apache MINA上实现二进制流数据报文的SM4编解码器
- 国家商用密码(十)在Apache MINA上实现文本流数据报文的SM4编解码器
- 国家商用密码(11)在Netty 5.0.X上实现文本流的SM4编解码器
- 国家商用密码(12)在Netty 4.1.12.Final上实现文本流的SM4编解码器
- 国家商用密码(13)在DotNetty 0.4.5上实现文本流的SM4编解码器
开放动态库支持中国商用密码算法:SM2、SM3、SM4,同时也支持AES对称加密算法。
下载地址:
当前提供的语言版本:
C#语言版本,其开发环境为:Visual Studio V2013、.NET Framework 4.5
Java语言版本,其开发环境为:NetBeans 8.0.2、JDK 8u45
算法说明
SM2:
- 支持P-256、P-384、P-521椭圆曲线
- 实现公钥加密算法、数字签名算法、密钥交换协议
- 实现基于椭圆曲线加密算法的软件授权码生成及校验
// 使用中国国家密码管理局推荐P256椭圆曲线 SM2 sm2 = new SM2(); SM2 sm2A = new SM2(SM2.EC256[0], SM2.EC256[1], SM2.EC256[2], SM2.EC256[3], SM2.EC256[4], SM2.EC256[5]); // 使用美国国家标准与技术研究院推荐P256椭圆曲线 SM2 NISTECP256 = SM2.CreateInstance(256); SM2 NISTECP256A = new SM2(SM2.NISTEC256[0], SM2.NISTEC256[1], SM2.NISTEC256[2], SM2.NISTEC256[3], SM2.NISTEC256[4], SM2.NISTEC256[5]); // 使用美国国家标准与技术研究院推荐P384椭圆曲线 SM2 NISTECP384 = SM2.CreateInstance(384); SM2 NISTECP384A = new SM2(SM2.NISTEC384[0], SM2.NISTEC384[1], SM2.NISTEC384[2], SM2.NISTEC384[3], SM2.NISTEC384[4], SM2.NISTEC384[5]); // 使用美国国家标准与技术研究院推荐P521椭圆曲线 SM2 NISTECP521 = SM2.CreateInstance(521); SM2 NISTECP521A = new SM2(SM2.NISTEC521[0], SM2.NISTEC521[1], SM2.NISTEC521[2], SM2.NISTEC521[3], SM2.NISTEC521[4], SM2.NISTEC521[5]);
SM3:
- 实现SM3密码杂凑算法
- 实现HMACSM3消息验证代码
SM4:
- 运算模式支持:ECB、CBC、CFB、OFB、PCBC、CTR、ECBCTS、CBCCTS
- 填充类型支持:PKCS7、ANSIX923、ISO10126、ISO7816、Zeros、None