资源简介
SM 国密算法(Java+JS),包含SM2和SM3的前后端代码。亲测可用,下载即可使用。
代码片段和文件信息
package com.dtdream.dtuser.base.util.encrypt.sm;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.math.ec.ECPoint;
import java.math.BigInteger;
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[] = SMUtil.byteConvert32Bytes(p2.getX().toBigInteger());
this.sm3keybase.update(p 0 p.length);
this.sm3c3.update(p 0 p.length);
p = SMUtil.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[] = SMUtil.byteConvert32Bytes(p2.getY().toBigInteger());
this.sm3c3.update(p 0 p.length);
this.sm3c3.doFinal(c3 0);
Reset();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2345 2019-03-07 15:11 SM2SM3\java\SM\Cipher.java
文件 2472 2019-03-07 15:05 SM2SM3\java\SM\SM2.java
文件 5634 2019-03-07 15:45 SM2SM3\java\SM\SM2Utils.java
文件 5588 2018-11-05 10:44 SM2SM3\java\SM\SM3.java
文件 2684 2018-11-05 10:44 SM2SM3\java\SM\SM3Digest.java
文件 2313 2018-11-05 10:44 SM2SM3\java\SM\SMUtil.java
文件 913 2018-11-05 10:44 SM2SM3\read me.txt
文件 2071 2019-03-07 14:26 SM2SM3\sm2.html
文件 994532 2018-11-01 16:19 SM2SM3\sm2.js
文件 680 2018-11-05 10:24 SM2SM3\sm3.html
文件 7061 2018-11-05 10:44 SM2SM3\sm3.js
目录 0 2019-03-07 16:08 SM2SM3\java\SM
目录 0 2019-03-07 16:08 SM2SM3\java
目录 0 2018-11-05 10:21 SM2SM3
----------- --------- ---------- ----- ----
1026293 14
- 上一篇:Java飞翔的小鸟全部代码
- 下一篇:Express12.zip
相关资源
- cglib-2.2.2.jar 和 asm-all-3.0.jar
- C#和Java实现互通的RSADES加解密算法
- smali jar包
- Spring+SpringMVC+Mybatis整合代码+所有Spr
- java国密算法SM4加密.zip
- Delphi 版 SM3 SM4 加密实现代码
- java算法大全含源码包
- 基于Java的地震数据处理软件
- 《Java EE企业级应用开发教程Spring+Sp
- 算法设计、分析与实现从入门到精通
- 黑马程序员SSM框架jar整合
- DES加密解密算法论文
- 华科密码学课设之SPN的差分攻击以及
- Smali指令中文手册
- 基于SSM框架的网上书店商城项目系统
- 基于SSM的校园兼职平台毕业设计程序
- RSA数字签名算法的具体实现
- maven+ssm 实现java版视频上传预览
- SSM+Mysql实现防慕课网项目.zip
- jsp+ssm+mysql实现的零食商城系统源码
- 银行家算法的java代码实现,Swing写的
- 基于JavaWeb的网上书店的设计与实现毕
- SmartPrinter v3.4及v4.1 完美破解版
- 大宝CA版本的国密算法DoubleCA-JCE实现,
- tomcat 采用msm连接memcached缓存session所需
- Java基于双向链表实现双端队列结构(
- SmartGit19.1.3_Crack
- 国密版本的SSL库
- RSA算法JAVA公钥加密,C#私钥解密
- aes加密算法 五种模式
评论
共有 条评论