文档

  • https://hutool.cn/docs/#/crypto/概述

目录

  • 1、摘要算法 digest
  • 2、对称加密 symmetric
  • 3、不对称加密 asymmetric

重点单词:

symmetric [sɪ'metrɪk] adj. 对称的
asymmetric [ˌeɪsɪˈmetrɪk] adj. 不对称
digest [daɪˈdʒest] n. 摘要

摘自文档

加密分为三种:对称加密(symmetric),例如:AES、DES等
非对称加密(asymmetric),例如:RSA、DSA等
摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等hutool-crypto针对这三种加密类型分别封装,并提供常用的大部分加密算法。对于非对称加密,实现了:RSA
DSA对于对称加密,实现了:AES
ARCFOUR
Blowfish
DES
DESede
RC2
PBEWithMD5AndDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40对于摘要算法实现了:MD2
MD5
SHA-1
SHA-256
SHA-384
SHA-512
HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512其中,针对常用到的算法,模块还提供SecureUtil工具类用于快速实现加密。

依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-crypto</artifactId><version>5.8.10</version>
</dependency>

1、摘要算法 digest

以MD5 为例

package com.mouday;import cn.hutool.crypto.SecureUtil;public class Demo {public static void main(String[] args) {String s = SecureUtil.md5("666");System.out.println(s);// fae0b27c451c728867a567e8c1bb4e53}
}

2、对称加密 symmetric

以AES 加密为例

package com.mouday;import cn.hutool.crypto.KeyUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;public class Demo {public static void main(String[] args) {// 16位自定义密码String key = "1234567891011123";String content = "明文";// 生成密钥byte[] byteKey = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue(), key.getBytes()).getEncoded();SymmetricCrypto aes = SecureUtil.aes(byteKey);// 加密String encryptData = aes.encryptBase64(content);System.out.println(encryptData);// nuP9GXvHgzW6Q12notB8jQ==// 解密String decryptData = aes.decryptStr(encryptData);System.out.println(decryptData);// 明文}
}

这里有个问题,如果秘钥长度不够16位,会报错

Exception in thread "main" cn.hutool.crypto.CryptoException:
InvalidKeyException: Invalid AES key length: 15 bytes

长度只能是16位,24位,32位

interface AESConstants {int AES_BLOCK_SIZE = 16;int[] AES_KEYSIZES = new int[]{16, 24, 32};
}

参考
https://toscode.gitee.com/dromara/hutool/issues/I4O1EB

3、不对称加密 asymmetric

以RSA为例

package com.mouday;import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;public class Demo {public static void main(String[] args) {String content = "明文";// 当使用无参构造方法时,Hutool将自动生成随机的公钥私钥密钥对:RSA rsa = SecureUtil.rsa();// 获得私钥rsa.getPrivateKey();rsa.getPrivateKeyBase64();// 获得公钥rsa.getPublicKey();rsa.getPublicKeyBase64();// 私钥加密String encryptData = rsa.encryptBase64(content, KeyType.PrivateKey);System.out.println(encryptData);// BigHAtzA/JtjgnLR6MLJ32qvWCC5+B0c6Un+r34zeZ/dygWsWlu8zAEdfr7kfcuF3C1gvevUjV844xi2huzL6x0HqlefmGF/XirUuxPVqJYHzSpzRXGUXK0qaRC1n/fDK3uqEkzy1nfKsnhR2aHVJmVe7BZtjrKsAeClgUzCFJI=// 公钥加密String decryptData = rsa.decryptStr(encryptData, KeyType.PublicKey);System.out.println(decryptData);// 明文}
}

Java:Hutool工具箱之Hutool-crypto加密解密相关推荐

  1. java rsa 117_java实现RSA非对称加密解密

    之前写过一篇java实现AES对称加密解密 在对密码加密传输的场景下 RSA非对称加密解密可能会更加适合. 原理就是后台生成一对公钥和私钥,公钥给前端用来加密,后台用私钥去解密,保证了传输过程中就算被 ...

  2. oracle加密可以跟java一致吗,在GBase 8s上使用java udr实现Oracle兼容的加密解密功能...

    最近碰到客户从Oracle迁移到GBase 8s使用到字段加密解密功能,使用到了Utl_raw.cast_to_varchar2.Utl_raw.cast_to_raw.Utl_encode.base ...

  3. java rsa 验_Java使用RSA加密解密签名及校验

    RSA加密解密类: package com.ihep; import java.io.BufferedReader; import java.io.BufferedWriter; import jav ...

  4. JAVA与PHP之间进行aes加密解密

    aes加密解密过程 用户数据应经过加密再传输,此文档为aes128加密(cbc模式)的说明 摘要算法为SHA-512 加密: 生成16位iv向量,使用该iv以及密钥加密原文 将加密后的真实密文与iv拼 ...

  5. java rsa签名_Java使用RSA加密解密签名及校验

    由于项目要用到非对称加密解密签名校验什么的,于是参考<Java加密解密的艺术>写一个RSA进行加密解密签名及校验的Demo,代码很简单,特此分享! 一.项目截图 代码下载后,导入到ecli ...

  6. 基于Python实现的CTF Crypto加密解密工具

    纯小白,记录一下自己小学期内做的项目.基于Python实现一个能够对凯撒密码.维吉尼亚密码.栅栏密码.摩斯密码.Base64编码.Ascii编码.AES.DES.RSA.RC4的加密解密以及维吉尼亚密 ...

  7. as3 crypto 加密解密des,rsa

    des实例: <?xml version="1.0″ encoding="utf-8″?> <s:Application xmlns:fx="http: ...

  8. java pkcs8格式的私钥_RSA加密解密中pkcs1与pkcs8格式私钥互相转换

    net,ios中rsa加解密使用的是pkcs1,而java使用的是pkcs8 如果是按1024取模(通常都是1024),pkcs1格式的私钥长度应该是812.如果是pkcs8的格式的密钥长度为861. ...

  9. java请求url加密_SpringCloud-Config通过Java访问URL对敏感词加密解密

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  10. java rsa内容超长_RSA 非对称加密解密,超长字符串分块处理

    class RsaServer { /** * @var false|resource */ protected $key; /** * 分隔符 * @var string */ protected ...

最新文章

  1. 5.15 pymysql 模块
  2. [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio
  3. 【dfs】【hash】有趣的英语角(2015特长生 T2/luogu 1019)
  4. break、continue、return的区别
  5. zabbix安装教程
  6. ant nutch mysql_ant编译apache-nutch-2.2.1结合mysql实现爬虫的安装配置全过程
  7. linux postgresql 创建数据库,第 23 课 PostgreSQL 创建自己的数据库、模式、用户
  8. oeasy教您玩转vim - 43 - # 替换模式
  9. 大话转岗 PHP 开发小结
  10. Android---简易的底部导航栏
  11. 详解目标检测的评价指标
  12. Adobe Flash player Activex控件问题解决方法
  13. JavaScript专题(三)防抖
  14. 万兴剪刀手去水印教程_万兴神剪手怎么去水印教程_赶快收藏吧
  15. 【大数据】 大数据计算系统
  16. 计算机核心论文投稿的一点碎碎念
  17. lazy(懒加载)模式和异步加载模式详解
  18. 一个比较全的vim指令记录
  19. 电脑桌面计算机怎么设置,示例win7电脑桌面图片怎么设置
  20. 内部表和外部表区别和详解

热门文章

  1. 神经网络第一篇——感受野的学习、计算与思考
  2. ubuntu deepin-wine 微信之后打不开
  3. 正则表达式三 不捕获文本 前瞻后顾 否定前瞻 否定后顾 贪婪匹配 懒惰匹配
  4. iOS 逆向 越狱手机如何安装老版本微信
  5. 富途量化交易接口使用什么语言编程?
  6. D3D9学习笔记之顶点缓存与索引缓存
  7. 帮谷歌推广Webp图片格式之:Webp的格式转换
  8. springboot打包错误:Failed to execute goal org.apache.maven.pluginsmaven-resources-plugin3.2.0
  9. Amazon Alexa系列介绍(1)--综述
  10. 验证码识别-Java版