-
大小: 6.09MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-11-10
- 语言: JavaScript
- 标签: 国产密码 SM3 javascript java
资源简介
国密算法SM3(密码杂凑算法):javascript版+java版(支持中文,含例子源程序)
javascript使用:
var sm3= new SM3Digest();
var encryptValue = sm3.Encrypt("待加密的字符串,支持中文");
//encryptValue 为加密后的字符串
java使用:
//1、无key方式
String returnValue = SM3.encrypt("待加密的字符串,支持中文");
//returnValue 为加密后的字符串
//2、有key方式
String returnValue = SM3.encrypt("待加密的字符串,支持中文","我的key信息");
//returnValue 为加密后的字符串
//验证1、无key方式
boolean flag = SM3.vertify("待加密的字符串,支持中文", returnValue );
//验证2、有key方式
boolean flag = SM3.vertify("待加密的字符串,支持中文", returnValue, "我的key信息");
文件包里有详细例子说明。
本资源来源于网络,本人二次修改加工处理,更方便使用。
javascript使用:
var sm3= new SM3Digest();
var encryptValue = sm3.Encrypt("待加密的字符串,支持中文");
//encryptValue 为加密后的字符串
java使用:
//1、无key方式
String returnValue = SM3.encrypt("待加密的字符串,支持中文");
//returnValue 为加密后的字符串
//2、有key方式
String returnValue = SM3.encrypt("待加密的字符串,支持中文","我的key信息");
//returnValue 为加密后的字符串
//验证1、无key方式
boolean flag = SM3.vertify("待加密的字符串,支持中文", returnValue );
//验证2、有key方式
boolean flag = SM3.vertify("待加密的字符串,支持中文", returnValue, "我的key信息");
文件包里有详细例子说明。
本资源来源于网络,本人二次修改加工处理,更方便使用。
代码片段和文件信息
import java.io.UnsupportedEncodingException;
import java.security.Security;
import java.util.Arrays;
import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
public class SM3 {
private static final String ENCODING = “UTF-8“;
static {
Security.addProvider(new BouncyCastleProvider());
}
/**
* SM3加密
* @param paramStr 待加密字符串
* @return 返回加密后,固定长度=32的16进制字符串
*/
public static String encrypt(String paramStr) {
//将返回的hash值转换为16进制字符串
String resultHexString = ““;
try {
//将字符串转换成byte数组
byte[] srcData = paramStr.getBytes(ENCODING);
byte[] resultHash = hash(srcData);
//将返回的hash值转换成16进制字符串
resultHexString = ByteUtils.toHexString(resultHash);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return resultHexString;
}
public static String encrypt(String paramStrString key) {
//将返回的hash值转换为16进制字符串
String resultHexString = ““;
try {
//将字符串转换成byte数组
byte[] srcData = paramStr.getBytes(ENCODING);
byte[] resultHash = hmac(srcDatakey.getBytes(ENCODING));
//将返回的hash值转换成16进制字符串
resultHexString = ByteUtils.toHexString(resultHash);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return resultHexString;
}
/**
* 返回长度为32的byte数组
* 生成对应的hash值
* @param srcData
* @return
*/
public static byte[] hash(byte[] srcData){
SM3Digest digest = new SM3Digest();
digest.update(srcData0srcData.length);
byte[] hash = new byte[digest.getDigestSize()];
digest.doFinal(hash 0);
return hash;
}
/**
* 通过指定密钥进行加密
* @param key 密钥
* @param srcData 被加密的byte数组
* @return
*/
public static byte[] hmac(byte[] keybyte[] srcData){
KeyParameter keyParameter = new KeyParameter(key);
SM3Digest digest = new SM3Digest();
HMac mac = new HMac(digest);
mac.init(keyParameter);
mac.update(srcData0srcData.length);
byte[] result = new byte[mac.getMacSize()];
mac.doFinal(result 0);
return result;
}
/**
* 判断数据源与加密数据是否一致,通过验证原数组和生成是hash数组是否为同一数组,验证二者是否为同一数据
* @param srcStr
* @param sm3HexString
* @return
*/
public static boolean vertify(String srcStrString sm3HexString){
boolean flag = false;
try {
byte[] srcData = srcStr.getBytes(ENCODING);
byte[] sm3Hash = ByteUtils.fromHexString(sm3HexString);
byte[] newHash = hash(srcData);
if(Arrays.equals(newHash sm3Hash)) {
flag = true;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return flag;
}
public static boolean vertify(String srcStrString sm3HexStringString key){
boolean flag = false;
try {
byte[] srcData = srcStr.getBytes(ENCODING);
byte[] sm3Hash = ByteUtils.fromHexString(sm3HexString);
byte[] newHash = hmac(src
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-12-26 11:33 SM3_java\
目录 0 2019-12-26 11:33 SM3_java\SM3\
文件 441 2018-09-20 16:29 SM3_java\SM3\.classpath
文件 379 2018-09-20 16:10 SM3_java\SM3\.project
目录 0 2019-12-26 11:33 SM3_java\SM3\.settings\
文件 598 2018-09-20 16:10 SM3_java\SM3\.settings\org.eclipse.jdt.core.prefs
目录 0 2019-12-26 11:33 SM3_java\SM3\bin\
文件 3129 2019-12-26 11:32 SM3_java\SM3\bin\SM3.class
目录 0 2019-12-26 11:33 SM3_java\SM3\lib\
文件 3330145 2018-09-20 16:29 SM3_java\SM3\lib\bcprov-jdk15on-1.57-sources.jar
文件 3759724 2018-09-20 16:29 SM3_java\SM3\lib\bcprov-jdk15on-1.57.jar
目录 0 2019-12-26 11:33 SM3_java\SM3\src\
文件 4262 2019-12-26 11:51 SM3_java\SM3\src\SM3.java
文件 103677 2018-07-10 17:12 SM3密码杂凑算法.pdf
目录 0 2018-09-20 17:02 sm3js\
目录 0 2019-12-26 11:29 sm3js\sm3js\
目录 0 2019-12-26 11:30 sm3js\sm3js\js\
文件 29182 2017-03-22 15:43 sm3js\sm3js\js\cipher-core.js
文件 85796 2019-12-26 10:19 sm3js\sm3js\js\core.js
文件 33903 2019-12-26 10:13 sm3js\sm3js\js\jsbn.js
文件 18651 2017-03-22 15:43 sm3js\sm3js\js\jsbn2.js
文件 99283 2019-12-26 11:43 sm3js\sm3js\js\sm3.js
文件 80 2019-12-26 11:31 sm3js\sm3js\js\说明.txt
文件 1035 2019-12-26 11:48 sm3js\sm3js\sm3-test.html
- 上一篇:超级漂亮的EasyUI框架皮肤源码
- 下一篇:无jQuery的SignalR项目
相关资源
-
北大青鸟ja
vasc ript内部测试题 -
ja
vasc ript高级程序设计源代码 -
300个ja
vasc ript源码 -
学习ja
vasc ript数据结构与算法,完 -
ja
vasc ript用的最牛逼的100个经典 -
ja
vasc ript - The Definitive Guide 4th ed -
ja
vasc ript权威指南第六版kindle -
ja
vasc ript Editor Pro 5.1永久智能汉化 -
ja
vasc ript动态网页版 -
现代ja
vasc ript开发技术英文原版 -
ja
vasc ript帮助文档几百种ja vasc -
李炎恢ja
vasc ript讲义上课所用最新 -
ja
vasc ript网页设计作品 -
廖雪峰-ja
vasc ript教程-PDF版 -
[ja
vasc ript高阶]ja vasc ript Cookb -
ja
vasc ript api200915 -
ja
vasc ript语言精粹[修订版].pdf 高清 -
超酷ja
vasc ript网页设计作品 -
web开发\\ja
vasc ript -
《ja
vasc ript网页特效大全》源代码 -
超实用的ja
vasc ript代码段实战源码 -
ja
vasc ript备课.zip -
学习ja
vasc ript数据结构与算法第 - HIS系统界面患者角度
-
100个+非常犀利的ja
vasc ript特效合集 -
ja
vasc ript设计模式与开发实践.mo -
ja
vasc ript语言精粹修订版 中文版高 - jQuery总结xmind图超级详细
-
学习ja
vasc ript数据结构与算法第 -
ja
vasc ript数据结构与算法第二版
评论
共有 条评论