gpt4 book ai didi

javascript - hash_hmac (PHP) 与 hex_hmac_sha1 (Javascript)

转载 作者:搜寻专家 更新时间:2023-10-31 21:09:11 24 4
gpt4 key购买 nike

我是新来的,我有问题。

你能告诉我为什么 hex_hmac_sha1(Javascript 函数)不如 hash_hmac(PHP 函数)好吗。

如果是 A-z 字母就没问题,但其他字符就不行。

例如:

Javascript

<script type="text/javascript" src="https://online.ingbank.pl/mobi/js/sha1.js"></script>
<script>
document.write(hex_hmac_sha1("1492343027",'a')+"<br />");
document.write(hex_hmac_sha1("1492343027",'ą')+"<br />");
document.write(hex_hmac_sha1("1492343027",'c')+"<br />");
document.write(hex_hmac_sha1("1492343027",'ć')+"<br />");
</script>

输出:

f75d4cbfbfda2476a9c92fff10fdf0e726ee06ab
206e608ecaf23a9575ca81a86e3afd72eca243a0
73e0dc1dd914b1386a5f2624883caad41025da07
86dc107aac5cb5c17a846defd651a3eb53d66a44

PHP

echo hash_hmac("sha1", 'a', "1492343027").'<br />'; 
echo hash_hmac("sha1", 'ą', "1492343027").'<br />';
echo hash_hmac("sha1", 'c', "1492343027").'<br />';
echo hash_hmac("sha1", 'ć', "1492343027").'<br />';

输出:

f75d4cbfbfda2476a9c92fff10fdf0e726ee06ab
8b353bb4c891d73ae9be09d0653e2564e0dff243
73e0dc1dd914b1386a5f2624883caad41025da07
52278a6e8676e8f3c667082411cfa04519c4bab1

'a' 和 'c' 一切正常,但是 '±' 和 'ć' 是怎么回事?

感谢帮助

最佳答案

PHP 和 JS 实现之间的区别在于,PHP 将 UTF-8 字符串作为 8 位字符处理,而在 JS 中每个字符都由 Unicode 表示。

请试一试:

hash_hmac("sha1", '±', "1492343027") == hex_hmac_sha1("1492343027",'\xC4\x85')

JSFIDDLE

UTF 8 十六进制来自 - http://www.charbase.com/0105-unicode-latin-small-letter-a-with-ogonek

JS

hex_hmac_sha1("1492343027",'ą')        = 206e608ecaf23a9575ca81a86e3afd72eca243a0
hex_hmac_sha1("1492343027",'\xC4\x85') = 8b353bb4c891d73ae9be09d0653e2564e0dff243

在 JS 端转义你的 Unicode...

PHP

hash_hmac("sha1", 'ą', "1492343027");        = 8b353bb4c891d73ae9be09d0653e2564e0dff243
hash_hmac("sha1", "\xC4\x85", "1492343027"); = 8b353bb4c891d73ae9be09d0653e2564e0dff243

关于javascript - hash_hmac (PHP) 与 hex_hmac_sha1 (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com