1.javax.crypto.Cipher; javax.crypto.KeyGenerator;这两个类库在哪?
2.AES 在线加密每次结果不一样(CryptoJS)
javax.crypto.Cipher; javax.crypto.KeyGenerator;这两个类库在哪?
两种方式,源码导入:由于默认是安装不包含安全相关包
1、删除整个依赖包,源码重新倒入java系统包,安装会包含进去
a、源码如何卸载linux源码删除包
b、安装源码恢复余数计算添加包
c、源码选择JRE 系统包
d、安装选择默认的源码工作空间的jre包
e、可以看到jce(Java Cryptography Extension)、安装jsse(Java Secure Sockets Extension)、源码这些安全包已经导入了
2、安装主动倒入缺少的源码波段绝杀指标源码安全包,下面截图是安装位置所在
eg:
AES 在线加密每次结果不一样(CryptoJS)
在使用AES在线加密网站时,遇到一个问题:每次加密结果虽然不同,源码但都以“U2FsdGVkX1”开头。首先尝试解密base编码查看内容,网站推送api源码发现密文总是以“Salted__”开头,这意味着网站使用了加盐处理,密文内包含了盐信息。
通过查看网站代码,答题网站源码推荐发现使用了CryptoJS第三方库。在npm上找到crypto-js库,深入阅读源码后得知,cipher-core.js文件中第行左右的parse函数解析出实际密文和盐值。密文以word(一个word由8个进制,即位,4字节)为单位分割成数组,ciphertextWords[0]是盐值(例如“Salt”),ciphertextWords[1]开始是ed__后跟盐值,之后的数组元素则是实际加密信息。
进一步分析源码了解到,盐值是随机生成的,无需指定,且存在一个密钥派生函数。该函数根据输入字符串生成符合要求长度的密钥,即使用户输入的密钥长度不符合要求,也能正常加密。