【问题标题】:decode md5 ecnrytion in java [duplicate]在java中解码md5 ecnrytion [重复]
【发布时间】:2016-11-09 17:41:21
【问题描述】:
public static String convertToMD5(String input) throws Exception {
    String md5 = null;
    if (null == input)
        return null;
    try {
        // Create MessageDigest object for MD5
        MessageDigest digest = MessageDigest.getInstance("MD5");
        // Update input string in message digest
        digest.update(input.getBytes(), 0, input.length());
        // Converts message digest value in base 16 (hex)
        md5 = new BigInteger(1, digest.digest()).toString(16);
    } catch (NoSuchAlgorithmException e) {

        throw e;
    }
    return md5;
}

使用此代码加密字符串 我想将 md5 加密解码为普通字符串? 你能帮忙吗

【问题讨论】:

    标签: java encryption md5


    【解决方案1】:

    md5 不是加密算法。这是一个hash function。哈希字符串无法解码。原始字符串被“销毁”/永远散列。

    【讨论】:

      【解决方案2】:

      要添加到@dit 的答案,您只有一个选择;例如比较 MD5 字符串。 MD5("cat") == MD5("cat"),没有办法从MD5("cat") 派生"cat",因为正如解释的那样,它是一个哈希函数。

      您可以使用以下内容进行比较:

      public static boolean matching(String orig, String compare){
          String md5 = null;
          try{
              MessageDigest md = MessageDigest.getInstance("MD5");
              md.update(compare.getBytes());
              byte[] digest = md.digest();
              md5 = new BigInteger(1, digest()).toString(16);
      
              return md5.equals(orig);
      
          } catch (NoSuchAlgorithmException e) {
              return false;
          }
      
          return false;
      }
      

      然后你可以调用matching("d077f244def8a70e5ea758bd8352fcd8", "cat");,它会返回true,如果是matching(MD5("x"), "y"),它会返回false。

      【讨论】:

      • 谢谢,你能帮忙看看最后的评论吗
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2015-01-26
      • 2011-08-17
      • 2011-04-07
      • 2023-04-04
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多