cn.hutool.crypto.symmetric.ChaCha20 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hutool-all Show documentation
Show all versions of hutool-all Show documentation
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
package cn.hutool.crypto.symmetric;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.KeyUtil;
import javax.crypto.spec.IvParameterSpec;
/**
* ChaCha20算法实现
* ChaCha系列流密码,作为salsa密码的改良版,具有更强的抵抗密码分析攻击的特性,“20”表示该算法有20轮的加密计算。
*
* @author looly
* @since 5.7.12
*/
public class ChaCha20 extends SymmetricCrypto {
private static final long serialVersionUID = 1L;
public static final String ALGORITHM_NAME = "ChaCha20";
/**
* 构造
*
* @param key 密钥
* @param iv 加盐,12bytes(64bit)
*/
public ChaCha20(byte[] key, byte[] iv) {
super(ALGORITHM_NAME,
KeyUtil.generateKey(ALGORITHM_NAME, key),
generateIvParam(iv));
}
/**
* 生成加盐参数
*
* @param iv 加盐
* @return {@link IvParameterSpec}
*/
private static IvParameterSpec generateIvParam(byte[] iv) {
if (null == iv) {
iv = RandomUtil.randomBytes(12);
}
return new IvParameterSpec(iv);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy