• 大小: 1.56MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-01
  • 语言: Java
  • 标签: 国密  SM2  SM4  java  android  

资源简介

国密加解密算法java实现源码,附带代码使用到的jar包以及PC验证工具,代码已在android studio上验证能够正常使用

资源截图

代码片段和文件信息

package com.security.cipher.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[]) 
{
byte p[] = Util.byteConvert32Bytes(p2.getY().toBigInteger());
this.sm3c3.update(p 0 p.length);
this.sm3c3.doFinal(c3 0);
Reset();
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-15 15:25  (SM2_SM3_SM4)国密算法java源代码+PC工具\
     目录           0  2017-12-15 15:25  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\
     目录           0  2017-12-15 15:22  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\
     目录           0  2017-12-15 15:21  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\
     目录           0  2017-12-15 15:21  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\
     目录           0  2017-12-15 15:21  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\
     文件        2461  2017-12-14 21:09  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\Cipher.java
     文件        6407  2017-12-14 23:55  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM2.java
     文件         409  2017-12-14 21:04  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM2Result.java
     文件       10106  2017-12-15 15:03  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM2Utils.java
     文件        8083  2017-12-14 21:06  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM3.java
     文件        3068  2017-12-14 21:05  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM3Digest.java
     文件        9784  2017-12-14 21:09  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM4.java
     文件        5042  2017-12-15 15:16  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM4Utils.java
     文件         246  2017-12-14 22:15  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\SM4_Context.java
     文件       18288  2017-12-14 21:08  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\com\security\cipher\sm\Util.java
     目录           0  2017-12-15 15:24  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\libs\
     文件     1651965  2017-12-13 23:55  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\libs\bcprov-jdk14-143.jar
     文件        7471  2017-03-30 10:14  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\libs\sun.misc.base64Decoder.jar
     文件         160  2017-12-15 15:28  (SM2_SM3_SM4)国密算法java源代码+PC工具\java源码+jar包\说明.txt
     目录           0  2017-12-15 15:25  (SM2_SM3_SM4)国密算法java源代码+PC工具\PC工具\
     目录           0  2017-12-15 15:25  (SM2_SM3_SM4)国密算法java源代码+PC工具\PC工具\SM2_3_4_CALC\
     文件       45056  2011-04-13 16:10  (SM2_SM3_SM4)国密算法java源代码+PC工具\PC工具\SM2_3_4_CALC\Asist.dll
     文件      344064  2014-10-09 09:36  (SM2_SM3_SM4)国密算法java源代码+PC工具\PC工具\SM2_3_4_CALC\SM2_3_4_CALC.exe

评论

共有 条评论