首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为AES创建强密码

为AES创建强密码
EN

Stack Overflow用户
提问于 2013-07-21 23:04:06
回答 2查看 2.4K关注 0票数 1

背景:我通过Grails pluginJasypt中使用PBEWITHSHA256AND128BITAES-CBC-BC算法(Bouncy Castle)。配置很简单:

代码语言:javascript
复制
jasypt {
    algorithm = "PBEWITHSHA256AND256BITAES-CBC-BC"
    providerName = "BC"
    password = "<your very secret passphrase>"
    keyObtentionIterations = 1000
}

我想知道如何为以上内容选择一个安全的密码。对长度、限制字符等是否有实际或实际的限制?我应该使用的特定生成器吗?我找不到关于这一点的明确文档,所有的例子都使用类似上面的东西(例如,"password","secret“等)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-25 03:34:44

正如术语所暗示的,基于密码的加密采用密码。密码通过密钥派生函数运行,以获得实际密钥。由于KDF通常由散列函数构造,因此密码可以是任何长度并包含任何字符。

密码必须通过KDF运行,因为典型的密码包含的熵不足以被认为是安全的,不会受到暴力破解攻击。KDF用计算代价高昂的密钥派生替换了这种“密钥空间”深度的缺乏-因此需要数千次迭代。缺点是初始化密码的代价也很高。

如果需要密码而不是原始密钥,这是一个非常值得的权衡。但是,在您的情况下,使用原始密钥会更好。不幸的是,您正在使用的Jasypt库似乎只支持PBE。

为了包含至少256比特的熵(与原始的随机256比特密钥一样多),the password has to contain at least 43 random (case-sensitive) alphanumeric characters。如果您选择这么长的密码,您可能可以将迭代次数减少到1。

对我来说,即使你使用的是一个你应该能够使用的库,但你必须仔细考虑这一切,这对我来说似乎是相当奇怪的,而不需要对密码学的工作原理有深入的了解。如果用户不应该知道他们是什么,为什么它会暴露所有丑陋的细节?

票数 3
EN

Stack Overflow用户

发布于 2013-07-22 19:37:03

有关生成安全密码短语的信息,请查看Diceware站点。请注意,你必须手工做这项工作,而不是使用计算机

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17773701

复制
相关文章

相似问题

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