• 大小: 2.46MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-19
  • 语言: Java
  • 标签: SM2  SM3  SM4  JS  JAVA  

资源简介

花了很多时间在网上寻找国密算法的实现资料,很少有人提供完整的JAVA与JS实现代码,附件将国密算法SM2 SM3 SM4的JAVA实现与JS实现整合在一个WEB项目中,JAVA版算法接口封装在com.ytkj.usp.sm.SMutil中,JS版本实现放在sm.js中(使用请参考/sm-tomcat/test.html这个例子),大家可以直接在项目里使用,WORD文档里给出了我们公司的具体加密策略,希望能解决大家的烦恼

资源截图

代码片段和文件信息

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\.settings\org.eclipse.jdt.core.prefs
     文件         479  2019-01-15 22:04  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\.settings\org.eclipse.wst.common.component
     文件         345  2019-01-15 22:05  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\.settings\org.eclipse.wst.common.project.facet.core.xml
     文件          49  2019-01-15 22:04  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\.settings\org.eclipse.wst.jsdt.ui.superType.container
     文件           6  2019-01-15 22:04  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\.settings\org.eclipse.wst.jsdt.ui.superType.name
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\
     文件        3448  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\Cipher.class
     文件        3144  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM2.class
     文件        4556  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM2Utils.class
     文件        5312  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM3.class
     文件        2965  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM3Digest.class
     文件         485  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM4$SM4_Context.class
     文件        8170  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM4.class
     文件        4414  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM4Utils.class
     文件         419  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SMutil$SM2Key.class
     文件        4309  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SMutil.class
     文件       10084  2019-01-19 22:34  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\build\classes\com\ytkj\usp\sm\Util.class
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\src\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\src\com\
     目录           0  2019-01-19 22:44  SM2 SM3 SM4国密算法JAVA与JS实现版本\sm-tomcat\src\com\ytkj\
............此处省略20个文件信息

评论

共有 条评论