gpt4 book ai didi

mysql - 我应该为 Jasypt 散列密码使用多长的密码?

转载 作者:行者123 更新时间:2023-11-29 00:36:15 24 4
gpt4 key购买 nike

我使用 Java 6、Jasypt 和 BouncyCaSTLe 生成散列密码。我将它们存储在具有默认 UTF-8 字符编码的 MySQL 5.5 数据库中。我试图弄清楚我使用 SHA-256 哈希算法和 20 字节的 RandomSaltGenerator 时应该给定我的 VARCHAR 密码字段多长时间。这是我在 Spring 应用程序上下文中的声明:

<beans:bean id="bcProvider" class="org.bouncycastle.jce.provider.BouncyCastleProvider" /> 

<beans:bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester">
<beans:property name="algorithm">
<beans:value>SHA-256</beans:value>
</beans:property>
<beans:property name="provider">
<beans:ref bean="bcProvider" />
</beans:property>
<beans:property name="saltGenerator">
<beans:ref bean="saltGenerator" />
</beans:property>
<beans:property name="saltSizeBytes" value="20" />
</beans:bean>

感谢您的指导,- 戴夫

最佳答案

SHA-256 哈希函数的输出长度为 256 位,这也许不足为奇。字符数取决于你如何编码它。

一个直接的二进制编码,每字节 8 位,会给你 32 个字节,但如果你将哈希输出存储在文本字段中,你可能正在使用例如编码它。 Base64(每个字符 6 位,填充为 4 个字符的倍数,总共 44 个字符)或可能是十六进制(每个字符 4 位,总共 64 个字符)。

除了散列之外,密码字段通常还包含重建它所需的盐。这将添加一些额外的字符数,具体取决于所选择的确切密码哈希方案、输出编码和参数(例如您的 saltSizeBytes)。

无论如何,如果您的密码散列方法的输出长度没有明确记录,找到它的最简单方法可能就是向它提供一些测试密码并查看它返回的内容。 (通常,输出应具有恒定长度。)然后,如果需要,可以在数据库定义中添加一些边距以确保安全。

哦,正如 Waleed Khan 所说,您真的应该使用实现 key stretching 的密码散列方法。 ,例如 PBKDF2 .

关于mysql - 我应该为 Jasypt 散列密码使用多长的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com