Package org.aoju.bus.crypto.symmetric
Class Crypto
java.lang.Object
org.aoju.bus.crypto.symmetric.Crypto
- All Implemented Interfaces:
Serializable,Decryptor,Encryptor
对称加密算法
在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。
收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbyte[]decrypt(byte[] bytes) 解密voiddecrypt(InputStream data, OutputStream out, boolean isClose) 解密,针对大数据量,结束后不关闭流byte[]encrypt(byte[] data) 加密voidencrypt(InputStream data, OutputStream out, boolean isClose) 加密,针对大数据量,可选结束后是否关闭流获得加密或解密器获得对称密钥初始化setIv(byte[] iv) 设置偏移向量setIv(IvParameterSpec iv) 设置偏移向量setMode(Mode.Cipher mode) 初始化模式并清空数据setParams(AlgorithmParameterSpec params) 设置AlgorithmParameterSpec,通常用于加盐或偏移向量setRandom(SecureRandom random) 设置随机数生成器,可自定义随机数种子byte[]update(byte[] data) 更新数据,分组加密中间结果可以当作随机数 第一次更新数据前需要调用setMode(Mode.Cipher)初始化加密或解密模式,然后每次更新数据都是累加模式updateHex(byte[] data) 更新数据,分组加密中间结果可以当作随机数 第一次更新数据前需要调用setMode(Mode.Cipher)初始化加密或解密模式,然后每次更新数据都是累加模式Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.aoju.bus.crypto.symmetric.Decryptor
decrypt, decrypt, decryptStr, decryptStr, decryptStr, decryptStr, decryptStr, decryptStrMethods inherited from interface org.aoju.bus.crypto.symmetric.Encryptor
encrypt, encrypt, encrypt, encrypt, encryptBase64, encryptBase64, encryptBase64, encryptBase64, encryptBase64, encryptHex, encryptHex, encryptHex, encryptHex, encryptHex
-
Constructor Details
-
Crypto
public Crypto(org.aoju.bus.core.lang.Algorithm algorithm) 构造,使用随机密钥- Parameters:
algorithm-Algorithm
-
Crypto
构造,使用随机密钥- Parameters:
algorithm- 算法,可以是"algorithm/mode/padding"或者"algorithm"
-
Crypto
public Crypto(org.aoju.bus.core.lang.Algorithm algorithm, byte[] key) 构造- Parameters:
algorithm- 算法Algorithmkey- 自定义KEY
-
Crypto
构造- Parameters:
algorithm- 算法Algorithmkey- 自定义KEY
-
Crypto
构造- Parameters:
algorithm- 算法key- 密钥
-
Crypto
构造- Parameters:
algorithm- 算法key- 密钥
-
Crypto
构造- Parameters:
algorithm- 算法key- 密钥paramsSpec- 算法参数,例如加盐等
-
-
Method Details
-
init
初始化- Parameters:
algorithm- 算法key- 密钥,如果为null自动生成一个key- Returns:
- Crypto的子对象,即子对象自身
-
getSecretKey
获得对称密钥- Returns:
- 获得对称密钥
-
getCipher
获得加密或解密器- Returns:
- 加密或解密
-
setParams
设置AlgorithmParameterSpec,通常用于加盐或偏移向量- Parameters:
params-AlgorithmParameterSpec- Returns:
- 自身
-
setIv
设置偏移向量- Parameters:
iv-IvParameterSpec偏移向量- Returns:
- 自身
-
setIv
设置偏移向量- Parameters:
iv- 偏移向量,加盐- Returns:
- 自身
-
setRandom
设置随机数生成器,可自定义随机数种子- Parameters:
random- 随机数生成器,可自定义随机数种子- Returns:
- this
-
setMode
初始化模式并清空数据- Parameters:
mode- 模式枚举- Returns:
- this
-
update
public byte[] update(byte[] data) 更新数据,分组加密中间结果可以当作随机数 第一次更新数据前需要调用setMode(Mode.Cipher)初始化加密或解密模式,然后每次更新数据都是累加模式- Parameters:
data- 被加密的bytes- Returns:
- update之后的bytes
-
updateHex
更新数据,分组加密中间结果可以当作随机数 第一次更新数据前需要调用setMode(Mode.Cipher)初始化加密或解密模式,然后每次更新数据都是累加模式- Parameters:
data- 被加密的bytes- Returns:
- update之后的hex数据
-
encrypt
public byte[] encrypt(byte[] data) Description copied from interface:Encryptor加密 -
encrypt
public void encrypt(InputStream data, OutputStream out, boolean isClose) throws org.aoju.bus.core.exception.CryptoException Description copied from interface:Encryptor加密,针对大数据量,可选结束后是否关闭流 -
decrypt
public byte[] decrypt(byte[] bytes) Description copied from interface:Decryptor解密 -
decrypt
public void decrypt(InputStream data, OutputStream out, boolean isClose) throws org.aoju.bus.core.exception.CryptoException Description copied from interface:Decryptor解密,针对大数据量,结束后不关闭流
-