前言:根据网络安全法要求,现在对数据存储、口令安全要求越来越严格,对技术人员编码规范要求愈加严苛,推出国密算法等政策要求
sm4-ecm举例说明
第一步引入包提示错误
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
第二步:pom.xml依赖如下
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.68</version>
</dependency>
说明如下:
BouncyCastle是一个开源的第三方算法提供商。
BouncyCastle提供了很多Java标准库没有提供的哈希算法和加密算法。
使用第三方算法前需要通过Security.addProvider()注册。文章来源:https://www.toymoban.com/news/detail-568118.html
第三步代码实现文章来源地址https://www.toymoban.com/news/detail-568118.html
public class SM4 {
/**
* sm4加密整合
*/
public static String tet(String str) {
String ENCODING = "UTF-8";
String ALGORITHM_NAME = "SM4";
String ALGORITHM_NAME_ECB_PADDING = "SM4/ECB/PKCS5Padding";
String EPIDEMIC_KEY = "4d18850d763e8748ff2f8d83530e0cf2";
Security.addProvider(new BouncyCastleProvider());
try {
if(str != null && !"".equals(str)){
String cipherText = "";
// 16进制字符串-->byte[]
byte[] keyData = ByteUtils.fromHexString(EPIDEMIC_KEY);
// String-->byte[]
byte[] srcData = str.getBytes(ENCODING);
// 加密后的数组
Cipher cipher = Cipher.getInstance(ALGORITHM_NAME_ECB_PADDING, BouncyCastleProvider.PROVIDER_NAME);
Key sm4Key = new SecretKeySpec(keyData, ALGORITHM_NAME);
cipher.init(Cipher.ENCRYPT_MODE, sm4Key);
byte[] cipherArray = cipher.doFinal(srcData);
// byte[]-->hexString
cipherText = ByteUtils.toHexString(cipherArray);
System.out.println("cipherText:"+cipherText);
return cipherText;
}else{
return str;
}
} catch (Exception e) {
return str;
}
}
public static void main(String[] args) {
tet("1661224949606");
}
}
到了这里,关于JAVA -SM4 ECB加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!