在网页上,我使用 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 输出匹配?