【问题标题】:Use of MD5 output for AES key使用 MD5 输出作为 AES 密钥
【发布时间】:2014-05-04 13:06:29
【问题描述】:

我想使用 MD5 哈希值作为 AES 密钥。但是 MD5 输出是十六进制数字(32 个四位值)。那么如何将它们转换为适合 AES 加密的格式(16 个 8 位值)。我希望在java中做到这一点。

【问题讨论】:

  • “但是 MD5 输出是十六进制数字” - 不,它只是二进制数据。您目前可能碰巧将其转换为十六进制,但您当然不必这样做。

标签: java hash aes md5


【解决方案1】:

我想您已经拥有来自另一个进程/程序的 MD5 HEX 字符串,您需要将此 HEX 值转换为字节 [16]。 使用以下方法:

import javax.xml.bind.DatatypeConverter;

public static byte[] toByteArray(String s) {
    return DatatypeConverter.parseHexBinary(s);
}

【讨论】:

  • 我已经尝试过了,但是在 AES 解密时我遇到了一些问题。 javax.crypto.IllegalBlockSizeException:在 com.sun.crypto.provider.CipherCore.doFinal( CipherCore.java:675) 在 com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313) 在 javax.crypto.Cipher.doFinal(Cipher.java:2087)
猜你喜欢
  • 2013-11-20
  • 1970-01-01
  • 2011-06-29
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多