-
大小: 6.09MB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2023-11-10
- 語言: JavaScript
- 標(biāo)簽: 國產(chǎn)密碼??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信息");
文件包里有詳細(xì)例子說明。
本資源來源于網(wǎng)絡(luò),本人二次修改加工處理,更方便使用。
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信息");
文件包里有詳細(xì)例子說明。
本資源來源于網(wǎng)絡(luò),本人二次修改加工處理,更方便使用。

代碼片段和文件信息
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進(jìn)制字符串
?*/
public?static?String?encrypt(String?paramStr)?{
//將返回的hash值轉(zhuǎn)換為16進(jìn)制字符串
String?resultHexString?=?““;
try?{
//將字符串轉(zhuǎn)換成byte數(shù)組
byte[]??srcData?=?paramStr.getBytes(ENCODING);
byte[]?resultHash?=?hash(srcData);
//將返回的hash值轉(zhuǎn)換成16進(jìn)制字符串
resultHexString?=?ByteUtils.toHexString(resultHash);
}?catch?(UnsupportedEncodingException?e)?{
e.printStackTrace();
}
return?resultHexString;
}
public?static?String?encrypt(String?paramStrString?key)?{
//將返回的hash值轉(zhuǎn)換為16進(jìn)制字符串
String?resultHexString?=?““;
try?{
//將字符串轉(zhuǎn)換成byte數(shù)組
byte[]?srcData?=?paramStr.getBytes(ENCODING);
byte[]?resultHash?=?hmac(srcDatakey.getBytes(ENCODING));
//將返回的hash值轉(zhuǎn)換成16進(jìn)制字符串
resultHexString?=?ByteUtils.toHexString(resultHash);
}?catch?(UnsupportedEncodingException?e)?{
e.printStackTrace();
}
return?resultHexString;
}
/**
?*?返回長度為32的byte數(shù)組
?*?生成對應(yīng)的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;
}
/**
?*?通過指定密鑰進(jìn)行加密
?*?@param?key?密鑰
?*?@param?srcData?被加密的byte數(shù)組
?*?@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;
}
/**
?*?判斷數(shù)據(jù)源與加密數(shù)據(jù)是否一致,通過驗證原數(shù)組和生成是hash數(shù)組是否為同一數(shù)組,驗證二者是否為同一數(shù)據(jù)
?*?@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項目
評論
共有 條評論