use*_*639 0 java security passwords password-protection password-encryption
我有以下代码来加密密码,但当我尝试解码它时,我没有得到预期的结果这里是代码.
BASE64Encoder encoder = new BASE64Encoder();
String afterhex=toSHA1("mypassword".getBytes());
String encodedBytes = encoder.encodeBuffer(afterhex.getBytes());
public static String toSHA1(byte[] convertme) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return new String(md.digest(convertme));
}
Run Code Online (Sandbox Code Playgroud)
例如,如果你试图编码,jill你应该得到 LQBIF2TS0FSDYtGjaNmC2gl/klw=
任何恢复它的建议:)
散列算法不是加密/解密算法.
散列是单向的映射大的数据集的可变长度(例如消息),以较小的数据集的固定长度(散列)的过程.长度取决于散列算法.
并且从哈希回到您的消息执行反向操作是不可能的.
尽管可以找到生成相同哈希的消息(例如使用彩虹表 ;对于较弱的哈希算法(如MD5)更容易),但您永远不知道该消息是否与用于生成哈希的原始消息相同.防止查找(猜测)生成相同散列值的消息(密码)的方法之一是在散列按摩(密码)时使用salt.
编辑
我还会推荐Bruce Schneier的任何书籍,例如" 密码学工程:设计原理和实际应用 "(以非常好的和可消化的方式编写),它将详细描述密码学和散列.
| 归档时间: |
|
| 查看次数: |
7714 次 |
| 最近记录: |