- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是新来的,我有问题。
你能告诉我为什么 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')
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/
我有生成 hash_hmac 的 php 代码 $concate=array(); $validation_token = hash_hmac('md5', implode("|", $concate
我正在开发一个新的 moodle 模块,它提供与 Windows Live 的集成。 使用实时身份验证时,我得到一个空白页面。打开 PHP 错误记录并获取: Fatal error: Call to
我需要签署我的亚马逊产品 API 请求,接受的代码如下。 base64_encode(hash_hmac('sha256', $request, $key, true)); 这在我使用 64 位 Li
阅读 this excellent answer关于密码散列和想知道如何实现它: The Wicked Flea写道: Generate a nonce for each user; this alo
我想知道,有没有办法在erlang中实现hash_hmac("sha256", $token, $signkey, true) (php)? 最佳答案 看看http://erlang.org/doc/
什么是等效的: hash_hmac('sha256', 'data', 'key') 如果我使用的是 openssl_*? openssl_digest 不接受 $key 参数。 最佳答案 此函数使用
$key = "12345678876543211234567887654321"; $iv = "1234567887654321"; $plaindata = "This is a test st
我正在尝试转换这个 php 函数: string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output =
我刚刚从这个站点获得了一个函数,它描述了如何使用哈希生成安全密码。功能如下 function hash_password($password, $nonce) { global $site_key
我正在尝试为以下项目编写 python 身份验证机器人:https://comkort.com/page/private_api 没有完整的 php 示例。我猜有人可以把它放在这里。 只有一段php代
我是新来的,我有问题。 你能告诉我为什么 hex_hmac_sha1(Javascript 函数)不如 hash_hmac(PHP 函数)好吗。 如果是 A-z 字母就没问题,但其他字符就不行。 例如
我有以下 PHP 函数 public function encodePassword($raw, $salt) { return hash_hmac('sha1', $raw
我有在我的 PHP 应用程序中运行的代码。在 PHP 中,我使用以下代码对 url 进行签名: private static function __getHash($string) { ret
我在 stack-overflow 中看到了一些相同的问题,但它对我没有帮助。 我有这个 php 代码 $signature=base64_encode(hash_hmac("sha256", tri
我正在创建一个更安全的用户密码表,其中包含用户名、强随机盐和 PHP 中的加盐/散列密码,如下所示: $salt = bin2hex(openssl_random_pseudo_bytes(64));
我正在将 PHP 应用程序移植到 C++。 PHP 应用程序正在使用此函数: hash_hmac — Generate a keyed hash value using the HMAC method
我有生成 hash_hmac 的 php 代码 key = base64_encode(hash_hmac('sha1',$public_key, $private_key,TRUE)); 我已经尝试
我遇到 hash_hmac 和 AWS 签名版本 4 的问题。我正在使用他们在此处列出的示例:http://docs.aws.amazon.com/general/latest/gr/sigv4-ca
我正在移植一个php脚本到node,我对加密不是很了解。 php脚本使用了这个函数: hash_hmac('sha512', text, key); 因此,我需要在 Node js 中实现一个函数,以
这个问题在这里已经有了答案: Implementation HMAC-SHA1 in python (8 个回答) 关闭5年前。 我想将我的访问者转发到第 3 方支付网站。该第 3 方将处理他们的付款
我是一名优秀的程序员,十分优秀!