一、概述
1、SM3是一种分组消息摘要算法,用于生成数据的哈希值(消息摘要),而非直接加密数据。
1.1、 应用场景
数据完整性校验:验证数据在传输或存储过程中是否被篡改。
数字签名:与SM2等算法结合使用,在数字签名过程中生成签名数据的哈希值。
网络安全:在网络通信中,用于验证消息的完整性和真实性。
2、SM4加密与SM2虽然都是SM系列,但是他们的机制却不同,因为他是对称加密算法,意味着他和AES一样不区分公钥和密钥,而是同一套密钥,但是密钥长度他是固定的128位,不像AES那样有多种密钥长度;
2.1、 应用场景
数据加密:对敏感数据进行加密保护,防止数据泄露。
物联网安全:在物联网环境中,保护设备间通信数据的隐私安全。
金融支付:在金融支付领域,确保交易信息的安全传输和存储。
二、SpringBoot 实现 加密
1、 pom
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version> <!-- 请使用最新版本 --></dependency>
2、代码实现
2.1 SM4
SymmetricCrypto sm4 = SmUtil.sm4(appKey.getBytes());// 加密String encryptHex = sm4.encryptHex(dataJson);//解密byte[] decrypt = sm4.decrypt(encryptHex);
2.2、SM3
// 加密
String sign = SmUtil.sm3(waitSign);