使用hutool的非对称加密工具进行加密解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 使用hutool的非对称加密工具进行加密解密

最近项目中有对密码加密的需求,就了解了一下非对称加密

对于非对称加密,最常用的就是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()方法生成随机的公钥和私钥;
伪代码如下:

    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命令,输出加密后的字符串;

相关文章
|
2月前
|
存储 安全 数据安全/隐私保护
Codota的数据加密技术包括静态数据加密和传输中的数据加密
Codota的数据加密技术包括静态数据加密和传输中的数据加密
64 4
|
4月前
|
存储 安全 数据安全/隐私保护
打造安全防线!Python AES&RSA加密工具,黑客绕道走的秘籍
【9月更文挑战第9天】随着数字化时代的到来,信息安全问题日益凸显。本文将介绍如何使用Python结合AES与RSA两种加密算法,构建强大的加密工具。AES以其高效性和强安全性著称,适用于大量数据的快速加密;RSA作为非对称加密算法,在加密小量数据及实现数字签名方面表现卓越。通过整合两者,可以构建既安全又灵活的加密系统。首先,需要安装pycryptodome库。接着,实现AES加密与解密功能,最后利用RSA加密AES密钥,确保其安全传输。这种设计不仅提高了数据传输效率,还增强了密钥交换的安全性,为敏感数据提供坚实保护。
255 43
|
2月前
|
安全 数据库 数据安全/隐私保护
对称加密与非对称加密的区别
对称加密与非对称加密的区别
215 64
|
1月前
|
Java 数据安全/隐私保护
对称加密、非对称加密、哈希摘要
对称加密使用同一密钥进行加解密,速度快但需保密;非对称加密采用公钥加密、私钥解密,公钥可公开,安全性高但速度较慢,双向通信需双方各持一对密钥;哈希摘要是从数据中提取特征,用于数据完整性校验,不同数据的哈希值几乎不会相同。
37 0
|
3月前
|
安全 网络协议 网络安全
【HTTPS】对称加密和非对称加密
【HTTPS】对称加密和非对称加密
50 0
|
4月前
|
安全 Java 数据安全/隐私保护
- 代码加密混淆工具-Java 编程安全性
在Java编程领域,保护代码安全与知识产权至关重要。本文探讨了代码加密混淆工具的重要性,并介绍了五款流行工具:ProGuard、DexGuard、Jscrambler、DashO 和 Ipa Guard。这些工具通过压缩、优化、混淆和加密等手段,提升代码安全性,保护知识产权。ProGuard 是开源工具,用于压缩和混淆Java代码;DexGuard 专为Android应用程序设计,提供强大加密功能;Jscrambler 基于云,保护Web和移动应用的JavaScript及HTML5代码;DashO 支持多种Java平台和
282 1
|
4月前
|
算法 安全 网络安全
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
191 0
|
5月前
|
存储 算法 安全
|
24天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。