国密算法介绍
最编程
2024-07-10 15:47:58
...
一、总体介绍
1、国密即国家密码局认定的国产密码算法。主要有 SM1,SM2,SM3,SM4。密钥长度和分组长度均为 128 位。
2、SM1 为对称加密。其加密强度与 AES 相当。该算法不公开,采用硬件实现,调用该算法时,需要通过加密芯片的接口进行调用。
3、SM2 为非对称加密,基于 ECC。该算法已公开。由于该算法基于 ECC,故其签名速度与秘钥生成速度都快于 RSA。ECC 256位(SM2 采用的就是 ECC 256 位的一种)安全强度比 RSA 2048 位高,但运算速度快于RSA。
4、SM3 消息摘要。可以用 MD5 作为对比理解。该算法已公开。校验结果为 256 位。
5、SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
二、实例
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.69</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.9</version>
</dependency>
String text = "我是一段测试aaaa";
// SM2 非对称加密算法
KeyPair pair = SecureUtil.generateKeyPair("SM2");
byte[] privateKey = pair.getPrivate().getEncoded();
System.out.println(privateKey);
byte[] publicKey = pair.getPublic().getEncoded();
SM2 sm2 = SmUtil.sm2(privateKey, publicKey);
// 公钥加密,私钥解密
String encryptStr = sm2.encryptBcd(text, KeyType.PublicKey);
String decryptStr = StrUtil.utf8Str(sm2.decryptFromBcd(encryptStr, KeyType.PrivateKey));
System.out.println(encryptStr);
// sm4 对称加密算法
SymmetricCrypto sm4 = SmUtil.sm4();
String encryptHex = sm4.encryptHex(text);
System.out.println(sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8));
//sm3
String digestHex = SmUtil.sm3(text);
System.out.println(digestHex);
推荐阅读
-
聚类分析 | IPOA 优化 FCM 模糊 C 均值聚类优化算法 - 基本介绍
-
10bit YUV(P010)的存储结构和处理-随着计算机处理信息的能力越来越厉害,这种能表现更高动态范围的图像存储格式将会逐渐成为主流,但是现在很多算法都不能直接处理 10bit 的 YUV ,都是先将其转换为 8bit YUV ,然后再进行处理,这实际上是丢弃了 10bit YUV 的图像高动态范围优势。 令人遗憾的是在渲染图像时,目前 OpenGL 也无法直接对 10bit YUV 进行渲染,也是需要先转换为 8bit YUV 。 接下来以一种常见的 10bit YUV (P010) 格式为例,介绍一下 10bit YUV 到 8bit YUV 的转换过程。 P010 最早是微软定义的格式,表示的是 YUV 4:2:0 的采样方式,也就是说 P010 表示的是一类 YUV 格式,它的内存排布方式可能是 NVNVYUYV12 。
-
深入解析堆排序算法: 详细介绍及演示
-
Python源码编写和介绍FFT算法
-
介绍L-BFGS算法:效果与原标题相同,但表达方式略有调整
-
搞定国密SSL通信的调试方法
-
SQL Server 日期转换方法大全:支持各种数据类型和格式样式的转换 说明: 本篇文章详细介绍了如何在SQL Server中进行日期转换,包括各种数据类型和格式样式的转换方法。其中包括了科威特算法的阿拉伯样式中的数据格式,并提供了多种样式可供选择。此外,还给出了详细的示例和注意事项,帮助读者更好地理解和应用这些转换方法。
-
从零开始入门 K8s | 调度器的调度流程和算法介绍
-
一种叫做EM算法的具体解释 - EM算法的介绍、推导及实战应用示例
-
简单易懂讲解:什么是粒子群优化算法(PSO) - 第一篇介绍