Roy*_*ari 4 java cryptography hash-function
我正在创建一个简单的Web应用程序,并希望将散列密码存储到数据库中.我也需要身份验证令牌的哈希函数(连接用户名和日期,并将它们的哈希值作为令牌发送给客户端).
我发现MessageDigest Java类可以帮助我解决这个问题.这是一个链接.基本想法是这样的:
public String digestString (String stringToHash) throws NoSuchAlgorithmException {
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] stringBytes = stringToHash.getBytes();
byte[] stringDigest = sha256.digest(stringBytes);
return new String(stringDigest);
}
Run Code Online (Sandbox Code Playgroud)
我得不到的是: 在这段代码中,我该如何设置哈希键?我需要确保在验证过程中使用相同的密钥.如果我没有设置密钥,我怎么能这样做?
顺便说一句:我知道我应该在哈希值之前添加一个盐(在这种情况下为256字节)到散列文本.
哈希不使用密钥.这只是一种单向算法.你给它一些消化的东西,然后它返回一个哈希值.它保证的是,找到导致相同散列的原始输入或任何其他输入非常困难.
您的算法有两个基本问题(除了缺少盐析):