首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用密码库实现Java中AES加密的几个问题

利用密码库实现Java中AES加密的几个问题
EN

Stack Overflow用户
提问于 2020-03-16 05:23:22
回答 1查看 345关注 0票数 0

我目前正在寻找一个使用Java的AES加密和解密示例,我偶然发现了这样的解决方案:

链接

其他解决办法也提供了同样的办法。我设法使它发挥作用,但我只是对它的实施有一些疑问。

问题:

  1. 为什么PBEKeySpec类需要密码?这是干什么用的?已经有一个密钥了,为什么它需要一个额外的令牌或密码呢?
  2. 我知道密钥和salt是原始未加密字符串加密值的一部分。为什么是这样?为什么不允许将生成密钥和盐分存储在其他地方?

谢谢,我感谢任何形式的帮助。我只想知道为什么是这样做的。

EN

回答 1

Stack Overflow用户

发布于 2020-03-16 10:59:10

为了便于使用和坚如磐石的java加密库,我建议使用http://www.jasypt.org/

对你的问题:

  1. 密码通常用于导出加密密钥;这是因为许多算法都需要密钥来满足某些属性,如长度和随机性,这是许多人通常使用的密码所不能满足的。另见https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/PBEKeySpec.html
  2. salt和初始化向量与加密值一起存储(也就是说,它们不是加密的),因为这很方便--您可以轻松地检索它们并使用它们解密原始字符串。这仍然是安全的,因为您通常只需要这些值是唯一的,而不是保密的;例如,salt通过为每个值设置一个唯一的盐来帮助您防止彩虹表的攻击。解释一些术语的有用资源:https://crypto.stackexchange.com/questions/3965/what-is-the-main-difference-between-a-key-an-iv-and-a-nonce
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60700718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档