相关疑难解决方法(0)

散列和加密算法之间的根本区别

我看到哈希和加密算法之间存在很多混淆,我希望听到一些更专业的建议:

  1. 何时使用哈希与加密

  2. 什么使哈希或加密算法不同(从理论/数学水平),即什么使哈希不可逆(没有彩虹树的帮助)

以下是一些类似的 SO问题,没有像我想要的那样详细说明:

混淆,散列和加密有什么区别?
加密和散列之间的区别

security encryption hash cryptography

494
推荐指数
10
解决办法
20万
查看次数

是否有可能解密MD5哈希?

有人告诉我他见过软件系统:

  1. 从其他系统检索MD5加密密码;
  2. 解密加密的密码和
  3. 使用系统自己的算法将密码存储在系统的数据库中.

那可能吗?我认为解密MD5哈希是不可能/不可行的.

我知道有MD5词典,但是有没有实际的解密算法?

encryption hash md5 cryptography

250
推荐指数
12
解决办法
41万
查看次数

哈希密码和加密密码之间的区别

目前对这个问题的最高投票表明:

另一个不是安全问题的安全问题虽然与安全相关,但却是完整的,并且很难解决散列密码和加密密码之间的区别.最常见于代码中的程序员试图提供不安全的"提醒我密码"功能.

究竟是什么区别?我总是认为哈希是一种加密形式.海报所指的不安全功能是什么?

language-agnostic security encryption passwords hash

127
推荐指数
7
解决办法
11万
查看次数

如何解密SHA-256加密字符串?

我有一个使用以下方法编码的字符串,有没有办法将此字符串解码回原始值?谢谢.

public synchronized String encode(String password)
        throws NoSuchAlgorithmException, IOException {

    String encodedPassword = null;
    byte[] salt = base64ToByte(saltChars);

    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    digest.reset();
    digest.update(salt);

    byte[] btPass = digest.digest(password.getBytes("UTF-8"));
    for (int i = 0; i < ITERATION_COUNT; i++) {
        digest.reset();
        btPass = digest.digest(btPass);
    }

    encodedPassword = byteToBase64(btPass);     
    return encodedPassword;
}

private byte[] base64ToByte(String str) throws IOException {

    BASE64Decoder decoder = new BASE64Decoder();
    byte[] returnbyteArray = decoder.decodeBuffer(str);

    return returnbyteArray;
}

private String byteToBase64(byte[] bt) {

    BASE64Encoder endecoder = new BASE64Encoder();
    String returnString …
Run Code Online (Sandbox Code Playgroud)

java hash cryptography

47
推荐指数
4
解决办法
23万
查看次数