Web ページで、Javascript を使用して文字列を Base64 に変換しています。
<script type="text/javascript">
function base64_encode (data) {
var b64 = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
enc = """",
tmp_arr = [];
if (!data) { return data; }
do {
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
enc = tmp_arr.join('');
var r = data.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
}
</script>
それはここからのコードです: http://phpjs.org/functions/base64_encode/
上記のコードを使用して文字列を base64 エンコードするcat
と、Y2F0
.
Powershell/.NET で同じ単語をエンコードすると、次のようになります。
PS C:\> [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("cat"))
YwBhAHQA
それらが異なるのはなぜですか? Javascript 関数を .NET 出力と一致させるにはどうすればよいですか?