相关疑难解决方法(0)

如何生成随机SHA1哈希以在node.js中用作ID?

我正在使用此行为node.js生成sha1 id:

crypto.createHash('sha1').digest('hex');
Run Code Online (Sandbox Code Playgroud)

问题是它每次都返回相同的id.

是否可以让它每次生成一个随机ID,以便我可以将它用作数据库文档ID?

javascript random sha1 entropy node.js

123
推荐指数
3
解决办法
7万
查看次数

安全比较与简单==(=)之间的区别是什么

Github的安全webhooks页面说:

==不建议使用普通运营商.一种方法,例如secure_compare执行"常量时间"字符串比较,这使得它对于针对常规相等运算符的某些定时攻击是安全的.

bcrypt.compare('string', 'computed hash')在比较密码时使用.

是什么使这成为"安全比较",我可以使用cryptoNode中的标准库吗?

security cryptography node.js

15
推荐指数
2
解决办法
3650
查看次数

Node Crypto createHmac()输出与PHP hash_hmac()输出的输出是否相同?

我试图在Node中复制PHP哈希生成函数.此哈希用作API的一部分.PHP版本创建系统接受的正确输出.节点版本创建了不同的输出,尽管我认为它们是函数上的相同输入.

这是因为PHP和Node HMAC功能有一些根本不同的方式吗?或者是因为我错过了一些带字符编码的怪癖?或者我只是搞砸别的东西?


PHP代码

$url = 'https://example.com/api/endpoint';
$user = 'apiuser';

// Example key
$key = '+raC8YR2F+fZypNJ5q+CAlqLFqNN1AlAfWwkwJLcI7jrAvppjRPikWp523G/u0BLSpN9+2LusJvpSwrfU9X2uA==';

$timestamp = gmdate('D, d M Y H:i:s T', 1543554184); // gmdate('D, d M Y H:i:s T');

$hashdata = "GET\n$url\n$user\n$timestamp\n";

print_r($hashdata);
/*
GET
https://example.com/api/endpoint
apiuser
Fri, 30 Nov 2018 05:03:04 GMT
*/

$decoded_key = base64_decode($key);

print_r(unpack('H*', $decoded_key));
// Array ( [1] => fab682f1847617e7d9ca9349e6af82025a8b16a34dd409407d6c24c092dc23b8eb02fa698d13e2916a79db71bfbb404b4a937dfb62eeb09be94b0adf53d5f6b8 )

$generated_hash = hash_hmac('sha256', $hashdata, $decoded_key, true);

$encoded_hash = base64_encode($generated_hash);

print_r($encoded_hash);
// vwdT8XhtSA1q+JvAfsRpJumfI4pemoaNFbjjc5JFsvw=
Run Code Online (Sandbox Code Playgroud)

Node.js代码

crypto = require('crypto');
moment = require('moment-timezone');

let url …
Run Code Online (Sandbox Code Playgroud)

php node.js

6
推荐指数
1
解决办法
276
查看次数

标签 统计

node.js ×3

cryptography ×1

entropy ×1

javascript ×1

php ×1

random ×1

security ×1

sha1 ×1