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のようなハッシュを取得します。
これは16進数のようです。base64でmd5ハッシュを変換しようとすると、まったく異なるハッシュが得られます(長くて醜い:))。
ヘルプ!!!
ありがとうございました!
LE:AZIが指摘したように、openssl/md5.hのMD5メソッドを使用します。