All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.siashan.toolkit.crypt.symmetric.AES Maven / Gradle / Ivy

There is a newer version: 1.2.5
Show newest version
package com.siashan.toolkit.crypt.symmetric;

/**
 * AES加密算法实现
* 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法
* 对于Java中AES的默认模式是:AES/ECB/PKCS5Padding,如果使用CryptoJS,请调整为:padding: CryptoJS.pad.Pkcs7 * *

* 相关概念说明: *

 * 秘钥长度:密钥的长度可以使用128位(AES-128)、192位(AES-192)或256位(AES-256)。密钥的长度不同,推荐加密轮数也不同
 *
 * mode:    加密算法模式,是用来描述加密算法(此处特指分组密码,不包括流密码,)在加密时对明文分组的模式,它代表了不同的分组方式
 * padding: 补码方式是在分组密码中,当明文长度不是分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组的长度。
 * iv:      在对明文分组加密时,会将明文分组与前一个密文分组进行XOR运算(即异或运算),但是加密第一个明文分组时不存在“前一个密文分组”,
 *          因此需要事先准备一个与分组长度相等的比特序列来代替,这个比特序列就是偏移量。
 * 
*

* 相关概念见:https://blog.csdn.net/OrangeJack/article/details/82913804 * * @author siashan * @since 1.0.7 */ public class AES extends SymmetricCrypt { private static final long serialVersionUID = 1L; public AES(){} @Override public SymmetricAlgorithm getAlgorithm() { return SymmetricAlgorithm.AES; } public AES(Mode mode,Padding padding){ super(SymmetricAlgorithm.AES,mode,padding); } /** * 构建加密算法类 *

默认实现:AES/CBC/PKCS5Padding

* * @return 加密算法类 */ public static SymmetricCrypt build(){ return build(Mode.CBC,Padding.PKCS5Padding); } /** * 构建加密算法类 * * @param mode 密码模式 * @param padding 填充模式 * @return 加密算法类 */ public static AES build(Mode mode,Padding padding){ return new AES(mode,padding); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy