我有一个关于 md5 的跨语言问题 :)。我在Java中有这段代码:
BASE64Encoder encoder = new BASE64Encoder();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(someString.getBytes());
byte[] bMac = md.digest();
String anotherString = encoder.encodeBuffer(bMac);
这对 md5 和 base64 中的字符串进行编码和散列。像 "aaa&1" 这样的字符串变成 Fv4eRn4R0/mB+uc4j1GGaA==
现在的问题是:如何在 C++ 中做到这一点?我正在使用 openssl/md5.h,但与任何其他在线 md5 编码器一样(经过一个小的谷歌搜索),它得到一个像这样的哈希:16fe1e467e11d3f981fae7388f518668
似乎是十六进制的。如果我尝试在 base64 中转换 md5 哈希,我会得到一个完全不同的哈希(更长更丑 :))。
帮助!!!
谢谢!
LE:正如 AZI 所指出的,我使用 openssl/md5.h 中的 MD5 方法。