hutool-crypto 依赖 Aes加密,解密

环境:springboot 2.4.0

1.添加依赖

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

2.初始化Aes对象,四个参数
2.1 Mode 枚举参数 选择加密模式
public enum Mode {
    NONE,
//CBC:基于IV的加密方案,该模式作为概率加密方案是安全的,假设随机IV,实现与随机比特的不可区分。 
    如果IV仅仅是nonce,则不能实现机密性,也不是如该标准错误建议的那样,在该方案使用的相同密钥下加密的nonce。 
    Ciphertexts具有很强的可塑性。 没有选择的密文攻击(CCA)安全性。 对于许多填充方法,在存在正确填充的oracle的情况下,机密性将被取消。 
    加密从本质上是连续的低效。 模式的隐私安全属性被广泛使用,导致频繁的误用。 可以用作CBC-MAC算法的构建块。 我认为CTR模式没有重要优势。
    CBC, 
//CFB:基于IV的加密方案,该模式作为概率加密方案是安全的,假设随机IV,实现与随机比特的不可区分。 
    如果IV是可预测的,也不是由在该方案使用的相同密钥下加密的随机数制作,如标准错误地建议的那样,则不能实现机密性。 
    Ciphertexts是可塑的。 没有CCA安全性。 加密从本质上是连续的低效。 方案取决于参数s,1≤s≤n,通常s = 1或s = 8.对于需要一个阻塞调用仅处理s位而言效率低。 
    该模式实现了一个有趣的“自同步”属性; 在密文中插入或删除任意数量的s位字符只会暂时中断正确的解密。
    CFB,
//CTR:基于IV的加密方案,该模式实现了与假设nonce IV的随机位的不可区分性。 作为基于安全随机数的方案,该模式还可以用作概率加密方案,具有随机IV。 
    如果nonce在加密或解密时被重用,则完全失去隐私。 模式的可并行性通常使其在某些设置中比其他机密性模式更快。 用于经过身份验证的加密方案的重要构建块。 
    总的来说,通常是实现仅隐私加密的最佳和最现代的方式。
    CTR,
    CTS,
    ECB,
    OFB,
    PCBC;

    private Mode() {
    }
}
默认 Mode.NONE

 


2.2 Padding 枚举参数
public enum Padding {
    NoPadding,
    ZeroPadding,
    ISO10126Padding,
    OAEPPadding,
    PKCS1Padding,
    PKCS5Padding,
    SSL3Padding;

    private Padding() {
    }
}

 


2.3 key byte[] 随机值
2.4 iv byte[] 随机值

3.初始化
Aes aes = new Aes(Mode.CBC,Padding.PKCS5Padding,key,iv);
aes.encrypyHex(data);//加密
aes.decryptStr(dataEncrypt);//解密
 


posted @ 2020-12-17 15:20  SimpleSmile  阅读(6532)  评论(0编辑  收藏  举报