在Java中,将SALT值生成为至少32字节长的字符串的最佳方法是什么?
在SpringSecurity中,您可以使用org.springframework.security.crypto.keygen.KeyGenerator
http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/keygen/KeyGenerators.html
http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/#spring-security-crypto-keygenerators
final Random r = new SecureRandom();
byte[] salt = new byte[32];
r.nextBytes(salt);
/** String encodedSalt = Base64.encodeBase64String(salt); */
在Java中,将SALT值生成为至少32字节长的字符串的最佳方法是什么?
我四处看看,最接近的答案是:如何生成随机的字母数字字符串? 我想根据本CrackStation教程遵循此工作流: 存储密码 > 使用CSPRNG生成长随机盐。 在密码前添加salt,并使用标准加密哈希函数(如SHA256)对其进行哈希运算。 在用户的数据库记录中保存salt和哈希。 验证密码的步骤 > 从数据库中检索用户的盐和哈希。 将salt前置到给定密码,并使用相同的哈希函数对其进行哈希运算。
我想使用 scrypt 为用户的密码和盐创建哈希。我找到了两个参考资料,但有些地方我不明白。 他们使用scrypt加密和解密功能。一个加密随机字符串,另一个加密盐(这看起来是错误的,因为只有密码而不是盐用于解密)。看起来解密功能用于验证密码/盐作为解密的副作用。 根据我对的了解,我想要的是一个密钥派生函数(KDF)而不是加密/解密,并且KDF很可能是由scrypt生成并使用的加密/解密。实际的KD
我如何加密一个密码,把它插入db和比较后,他什么时候会想要连接? 我将使用StandardPasswordEncoder Spring security 3.1.4加密我的密码并将其插入DB。但是我如何回收方法产生的盐呢? 我问她是因为我需要selt命令来重新编码比较的密码?并验证用户是否必须输入正确的密码? 这里的密码编码:和我会比较编码新密码 链接文档Spring:http://docs.Sp
问题内容: 我想用Java生成一个.torrent文件,但是我不想要一个大的API,它可以执行诸如抓取跟踪器,种子等操作。这仅适用于生成元数据的客户端。存在哪些轻量级解决方案?我只生成一个.zip文件的.torrent。 谢谢! 问题答案: 我整理了这段独立的Java代码,以准备一个带有单个文件的.torrent文件。 通过调用.torrent文件的名称,共享文件的名称和跟踪器URL 来创建.to
我的印象是,UUID规范需要一个有保证的、真实的、全球唯一的结果,不是99.999999999999%的唯一结果,而是100%的唯一结果。从规格来看: UUID为128位长,可以保证跨空间和时间的唯一性。 看起来java只支持UUID规范的V3和V4。V4并不是真正独特的。对于使用< code > namuuidfrombytes 的V3实现,下面的结果是重复的,因为计算机太快了(编辑:循环到10