私はPHPに変換しようとしているJavaScript関数を持っています.CryptoJSライブラリを使用しています。具体的にはcomponents/enc-base64-min.js
とrollups/md5.js
です。彼らはhereを見つけることができます。それにPHPを使用してCryptoJS.enc.Base64と同じ結果を生成
コード
// Let's say str = 'hello';
var md5 = CryptoJS.MD5(str);
md5 = md5.toString(CryptoJS.enc.Base64);
// md5 outputs "XUFAKrxLKna5cZ2REBfFkg=="
のこのビットが私はstr
変数は、その後のBase64にエンコードされたMD5を使用してハッシュされると仮定ので、私はその後、私は両方の検証を試みたこの単純なコード
$md5 = md5($str);
$md5 = base64_encode($md5);
// md5 outputs "MmZjMGE0MzNiMjg4MDNlNWI5NzkwNzgyZTRkNzdmMjI="
を試みています出力は、JS出力が有効なBase64文字列ではないようです。なぜCryptoJS.enc.Base64
が使用され、私はW3SchoolsからtoString()
パラメータを探してみましたが、パラメータは整数(2、8または16)であることを想定している参照ごとに、それは、私には意味をなさないdoesntの更なる理解する
代わりに?
ここでの目標は、JSを使用して有効なbase64エンコードされた文字列を生成するのではなく、PHPを使用して同じ出力を生成することです。
MD5は16バイトのバイナリを生成します出力。ベース64は各6ビットを8ビットのASCII文字にエンコードします。 16 * 8/6 = 21.3バイト、Base64は出力を4バイトの倍数にパディングします。このMD5出力のbase64エンコードは、最初の例と一致する24バイトの出力を生成します。 2番目の例では、44バイトの出力が生成されるため、正しくありません。 – zaph
@zaph詳細を教えてくれてありがとう –