使用hutool的非对称加密工具进行加密解密
2023-02-25 18:17:12 时间
最近项目中有对密码加密的需求,就了解了一下非对称加密
对于非对称加密,最常用的就是RSA和DSA, 非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。
根据应用的不同,可以使用不同的密钥加密:
- 签名:使用私钥加密,公钥解密。用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得。
- 加密:用公钥加密,私钥解密。用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。
RSA算法
RSA是最流行的非对称加密算法之一。也被称为公钥加密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA是非对称的,也就是用来加密的密钥和用来解密的密钥不是同一个。和DES一样的是,RSA也是分组加密算法,不同的是分组大小可以根据密钥的大小而改变。如果加密的数据不是分组大小的整数倍,则会根据具体的应用方式增加额外的填充位。
RSA加密
在hutool工具中,有现成的方法使用;
首先需要引入依赖:
compile 'cn.hutool:hutool-crypto:5.8.9'
- 生成密钥对: 调用rsa()方法生成随机的公钥和私钥; 伪代码如下:```java RSA rsa_o = SecureUtil.rsa(); String priKey = rsa_o.getPrivateKeyBase64(); String pubKey = rsa_o.getPublicKeyBase64(); ```RSA rsa = SecureUtil.rsa(null, pubKey); String base64 = rsa.encryptBase64("123456", StandardCharsets.UTF_8, KeyType.PublicKey); System.out.println(base64); rsa = SecureUtil.rsa(priKey,null); base64 = rsa.decryptStr(base64,KeyType.PrivateKey); System.out.println(base64);
- 加密字符串 使用公钥加密字符串 伪代码如下:
- 解密字符串 使用私钥解密字符串: 伪代码如下:
项目应用
在项目应用中,可以对在启动类中对密码进行加密;
伪代码如下:
public class GzApplication {
public static void main(String[] args) {
if(args.length >= 2){
encryptPwd(args[0],args[1]);
return;
}
SpringApplication.run(GzApplication.class, args);
}
public static String encryptPwd(String pwd,String pubKey){
RSA rsa = SecureUtil.rsa(null, pubKey);
String base64 = rsa.encryptBase64(pwd, StandardCharsets.UTF_8, KeyType.PublicKey);
String encryptPwd = new StringBuffer("RSA:").append(base64).toString();
return encryptPwd;
}
打包完成后,使用java -jar **.jar pwd pubkey命令,输出加密后的字符串;
相关文章
- 大多数人选择在 Steam Deck 上坚持使用 Linux 的五个原因
- 细数线程池的十个坑
- Linux 中的解压缩命令:unzip
- Lua面向对象编程的基本原理示例,你明白几分?
- 企业数据战略的七个发展趋势
- GNOME 的研究报告称 90% 以上的系统都安装了 Flatpak
- Restful、SOAP、RPC、SOA到底有什么区别,你知道了吗?
- Go 语言怎么处理三方接口返回数据?
- Colorblind Filters:帮助色盲用户的 GNOME 扩展
- 谈谈阻碍数据建模的五大借口
- 2023 年值得期待的11个新发行版
- 大数据世界中的新技术
- Windows 11 学院:如何在 Windows 11 Build 25281 上启用新版音量控件
- 「React 进阶」react-router v6 通关指南
- Neo4j宣布下一代图数据平台Neo4j 5上线
- 观远数据荣膺Gartner2022中国分析平台Cool Vendor
- 完整指南:使用 VirtualBox 在 Windows 上安装 Ubuntu
- 32 图 | 手摸手 Spring Cloud Gateway + JWT 实现登录认证
- 如何从边缘分析中推动业务价值
- EndeavourOS:你对完美的 Arch 发行版的搜寻到此为止