资源简介
国密最全 sm2 sm3 sm4 JavaScript版本 js版本 java版本 c版本 来源与github csdn other 省积分
代码片段和文件信息
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;
}
/**
* 返回长度为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 void main(String[] args){
//测试
String str = “412345195604153562“;
String hex = SM3.encrypt(str);
System.out.println(hex);
String str1 = “1234“;
String hex1 = SM3.encrypt(str1);
System.out.println(hex1);
String str2 = “qwer12345“;
String hex2 = SM3.encrypt(str2);
System.out.println(hex2);
String strpre = “412727“;
String hexpre = SM3.encrypt(strpre);
System.out.println(hexpre);
//验证加密后的16进制字符串与加密前的字符串是否相同
boolean flag = SM3.vertify(str hex);
System.out.println(flag);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-30 08:52 最全国密算法\
目录 0 2019-02-21 17:46 最全国密算法\js 和java 的sm3加密\
文件 6447396 2019-04-26 09:24 最全国密算法\js 和java 的sm3加密.zip
文件 103677 2018-07-10 17:12 最全国密算法\js 和java 的sm3加密\302a3ada057c4a73830536d03e683110.pdf
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\sm3js_\
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\js\
文件 29182 2017-03-22 15:43 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\js\cipher-core.js
文件 21468 2017-03-22 15:43 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\js\core.js
文件 15248 2017-03-22 15:43 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\js\jsbn.js
文件 18651 2017-03-22 15:43 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\js\jsbn2.js
文件 13008 2017-04-09 01:00 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\js\sm3.js
文件 1579 2018-11-15 18:51 最全国密算法\js 和java 的sm3加密\sm3js_\sm3js\sm3-test.html
文件 208896 2018-09-20 11:43 最全国密算法\js 和java 的sm3加密\SM3_Calc_.exe
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\SM3_java_\
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\
文件 441 2018-09-20 16:29 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\.classpath
文件 379 2018-09-20 16:10 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\.project
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\.settings\
文件 57 2018-11-12 14:14 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\.settings\org.eclipse.core.resources.prefs
文件 598 2018-09-20 16:10 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\.settings\org.eclipse.jdt.core.prefs
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\bin\
文件 3132 2018-11-15 17:35 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\bin\SM3.class
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\lib\
文件 3330145 2018-09-20 16:29 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\lib\bcprov-jdk15on-1.57-sources.jar
文件 3759724 2018-09-20 16:29 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\lib\bcprov-jdk15on-1.57.jar
目录 0 2019-02-21 17:45 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\src\
文件 3174 2018-11-12 14:22 最全国密算法\js 和java 的sm3加密\SM3_java_\SM3\src\SM3.java
文件 55398 2019-04-26 10:56 最全国密算法\js-spark-md5-master.zip
文件 434136 2019-04-28 15:01 最全国密算法\SM2-master (1).zip
文件 434136 2019-04-28 14:59 最全国密算法\SM2-master.zip
............此处省略83个文件信息
评论
共有 条评论