资源简介
SM3国产加密JS版和JAVA版,直接可以使用。js版有使用方法。
代码片段和文件信息
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 2018-09-20 17:02 sm3加密(js、java)\
文件 103677 2018-07-10 17:12 sm3加密(js、java)\302a3ada057c4a73830536d03e683110.pdf
目录 0 2018-09-20 17:02 sm3加密(js、java)\sm3js\
目录 0 2018-09-20 17:02 sm3加密(js、java)\sm3js\sm3js\
目录 0 2018-11-15 19:02 sm3加密(js、java)\sm3js\sm3js\js\
文件 29182 2017-03-22 15:43 sm3加密(js、java)\sm3js\sm3js\js\cipher-core.js
文件 21468 2017-03-22 15:43 sm3加密(js、java)\sm3js\sm3js\js\core.js
文件 15248 2017-03-22 15:43 sm3加密(js、java)\sm3js\sm3js\js\jsbn.js
文件 18651 2017-03-22 15:43 sm3加密(js、java)\sm3js\sm3js\js\jsbn2.js
文件 13008 2017-04-09 01:00 sm3加密(js、java)\sm3js\sm3js\js\sm3.js
文件 1579 2018-11-15 18:51 sm3加密(js、java)\sm3js\sm3js\sm3-test.html
文件 208896 2018-09-20 11:43 sm3加密(js、java)\SM3_Calc.exe
目录 0 2018-09-20 17:02 sm3加密(js、java)\SM3_java\
目录 0 2018-09-20 16:28 sm3加密(js、java)\SM3_java\SM3\
文件 441 2018-09-20 16:29 sm3加密(js、java)\SM3_java\SM3\.classpath
文件 379 2018-09-20 16:10 sm3加密(js、java)\SM3_java\SM3\.project
目录 0 2018-11-12 14:14 sm3加密(js、java)\SM3_java\SM3\.settings\
文件 57 2018-11-12 14:14 sm3加密(js、java)\SM3_java\SM3\.settings\org.eclipse.core.resources.prefs
文件 598 2018-09-20 16:10 sm3加密(js、java)\SM3_java\SM3\.settings\org.eclipse.jdt.core.prefs
目录 0 2018-11-15 17:35 sm3加密(js、java)\SM3_java\SM3\bin\
文件 3132 2018-11-15 17:35 sm3加密(js、java)\SM3_java\SM3\bin\SM3.class
目录 0 2018-09-20 16:29 sm3加密(js、java)\SM3_java\SM3\lib\
文件 3330145 2018-09-20 16:29 sm3加密(js、java)\SM3_java\SM3\lib\bcprov-jdk15on-1.57-sources.jar
文件 3759724 2018-09-20 16:29 sm3加密(js、java)\SM3_java\SM3\lib\bcprov-jdk15on-1.57.jar
目录 0 2018-09-20 16:29 sm3加密(js、java)\SM3_java\SM3\src\
文件 3174 2018-11-12 14:22 sm3加密(js、java)\SM3_java\SM3\src\SM3.java
- 上一篇:基于java的五子棋程序设计毕业论文
- 下一篇:基于JSP的销售及客户管理系统
相关资源
- SM2&SM3&SM4国密算法Java实现含详细测试
- java实现国密算法SM2SM3SM4算法
- Android SM2、SM3、SM4 算法支持 Service P
- 国密SM3算法实现源代码只适合JAVA
- JAVA国密算法pnc,sm2,sm3,sm4,jar包直
- 真正国密SM2SM3SM4的前后台配套js和ja
- java实现国密SM3算法
- asm3.3相关jar包集合
- 国密算法SM3_SM4.zip
- SM2&SM3&SM4国密规范及Java软算法实现
- java及js分别实现SM3加密
- java版的sm2、sm3、sm4加密解密,以及数
- java 国密算法实现包含SM2 SM3 SM4和数字
- 基于Java的SM2_SM3_SM4国密算法java源代码
- SM2_SM3_SM4国密算法java源码+PC工具
- SM2、SM3、SM4国密算法Java实现(含详细
- 国密SM3,JS版,粘贴即用,适用于前端
- 国密sm2,sm3,sm4计算小工具
- SM2ANDSM3ANDSM4国密算法Java实现含详细测
- js版 sm3加密
- 国产加密SM3算法java实现长度64位
- SM2SM3SM4 java实现
评论
共有 条评论