花了很多时间在网上寻找国密算法的实现资料,很少有人提供完整的JAVA与JS实现代码,附件将国密算法SM2 SM3 SM4的JAVA实现与JS实现整合在一个WEB项目中,JAVA版算法接口封装在com.ytkj.usp.sm.SMutil中,JS版本实现放在sm.js中(使用请参考/sm-tomcat/test.html这个例子),大家可以直接在项目里使用,WORD文档里给出了我们公司的具体加密策略,希望能解决大家的烦恼
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat
文件 841 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.classpath
文件 909 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.project
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settings
文件 567 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settings.jsdtscope
文件 364 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.jdt.core.prefs
文件 479 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.common.component
文件 345 2019-01-15 22:05 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.common.project.facet.core.xml
文件 49 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.jsdt.ui.superType.container
文件 6 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.jsdt.ui.superType.name
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuild
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclasses
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescom
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkj
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjusp
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsm
文件 3448 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmCipher.class
文件 3144 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM2.class
文件 4556 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM2Utils.class
文件 5312 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM3.class
文件 2965 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM3Digest.class
文件 485 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM4$SM4_Context.class
文件 8170 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM4.class
文件 4414 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM4Utils.class
文件 419 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSMutil$SM2Key.class
文件 4309 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSMutil.class
文件 10084 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmUtil.class
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatsrc
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatsrccom
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatsrccomytkj
............此处省略20个文件信息
package com.ytkj.usp.sm;
import java.math.BigInteger;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.math.ec.ECPoint;
public class Cipher {
private int ct;
private ECPoint p2;
private SM3Digest sm3keybase;
private SM3Digest sm3c3;
private byte key[];
private byte keyOff;
public Cipher()
{
this.ct = 1;
this.key = new byte[32];
this.keyOff = 0;
}
private void Reset()
{
this.sm3keybase = new SM3Digest();
this.sm3c3 = new SM3Digest();
byte p[] = Util.byteConvert32Bytes(p2.getX().toBigInteger());
this.sm3keybase.update(p 0 p.length);
this.sm3c3.update(p 0 p.length);
p = Util.byteConvert32Bytes(p2.getY().toBigInteger());
this.sm3keybase.update(p 0 p.length);
this.ct = 1;
NextKey();
}
private void NextKey()
{
SM3Digest sm3keycur = new SM3Digest(this.sm3keybase);
sm3keycur.update((byte) (ct >> 24 & 0xff));
sm3keycur.update((byte) (ct >> 16 & 0xff));
sm3keycur.update((byte) (ct >> 8 & 0xff));
sm3keycur.update((byte) (ct & 0xff));
sm3keycur.doFinal(key 0);
this.keyOff = 0;
this.ct++;
}
public ECPoint Init_enc(SM2 sm2 ECPoint userKey)
{
AsymmetricCipherKeyPair key = sm2.ecc_key_pair_generator.generateKeyPair();
ECPrivateKeyParameters ecpriv = (ECPrivateKeyParameters) key.getPrivate();
ECPublicKeyParameters ecpub = (ECPublicKeyParameters) key.getPublic();
BigInteger k = ecpriv.getD();
ECPoint c1 = ecpub.getQ();
this.p2 = userKey.multiply(k);
Reset();
return c1;
}
public void Encrypt(byte data[])
{
this.sm3c3.update(data 0 data.length);
for (int i = 0; i < data.length; i++)
{
if (keyOff == key.length)
{
NextKey();
}
data[i] ^= key[keyOff++];
}
}
public void Init_dec(BigInteger userD ECPoint c1)
{
this.p2 = c1.multiply(userD);
Reset();
}
public void Decrypt(byte data[])
{
for (int i = 0; i < data.length; i++)
{
if (keyOff == key.length)
{
NextKey();
}
data[i] ^= key[keyOff++];
}
this.sm3c3.update(data 0 data.length);
}
public void Dofinal(byte c3[])
{
by
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat
文件 841 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.classpath
文件 909 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.project
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settings
文件 567 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settings.jsdtscope
文件 364 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.jdt.core.prefs
文件 479 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.common.component
文件 345 2019-01-15 22:05 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.common.project.facet.core.xm
文件 49 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.jsdt.ui.superType.container
文件 6 2019-01-15 22:04 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcat.settingsorg.eclipse.wst.jsdt.ui.superType.name
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuild
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclasses
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescom
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkj
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjusp
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsm
文件 3448 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmCipher.class
文件 3144 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM2.class
文件 4556 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM2Utils.class
文件 5312 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM3.class
文件 2965 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM3Digest.class
文件 485 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM4$SM4_Context.class
文件 8170 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM4.class
文件 4414 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSM4Utils.class
文件 419 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSMutil$SM2Key.class
文件 4309 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmSMutil.class
文件 10084 2019-01-19 22:34 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatuildclassescomytkjuspsmUtil.class
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatsrc
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatsrccom
目录 0 2019-01-19 22:44 SM2 SM3 SM4国密算法JAVA与JS实现版本sm-tomcatsrccomytkj
............此处省略20个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)