最近项目中有对密码加密的需求,就了解了一下非对称加密
对于非对称加密,最常用的就是RSA和DSA, 非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。
根据应用的不同,可以使用不同的密钥加密:
RSA是最流行的非对称加密算法之一。也被称为公钥加密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA是非对称的,也就是用来加密的密钥和用来解密的密钥不是同一个。和DES一样的是,RSA也是分组加密算法,不同的是分组大小可以根据密钥的大小而改变。如果加密的数据不是分组大小的整数倍,则会根据具体的应用方式增加额外的填充位。
在hutool工具中,有现成的方法使用;
首先需要引入依赖:
compile 'cn.hutool:hutool-crypto:5.8.9'
在项目应用中,可以对在启动类中对密码进行加密;
伪代码如下:
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命令,输出加密后的字符串;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。