我需要生成一个公钥和密钥。
以下代码是否足够?
<?php
function genToken($salt) {
$secret = openssl_random_pseudo_bytes(16);
$apiKey = hash_hmac('sha256', $salt, $secret);
$apiKey = base64_encode($apiKey);
$apiKey = str_replace('=', '', $apiKey);
return $apiKey;
}
$salt = 'UsernameEmail@gmail.com';
echo 'pk_' . genToken($salt);
echo "\n";
echo 'sk_' . genToken($salt);
echo "\n";
答案 0 :(得分:1)
不要使用用户电子邮件作为salt,因为它可以被猜到。而不是自己冒险而冒错误使用库。
我建议你使用这个PHP库https://github.com/IcyApril/CryptoLib(就像这篇帖子中提出的那样:Generating cryptographically secure tokens)。使用此库可以生成随机字符串,然后通过公开非常实用的方法使用salt对其进行哈希:
此示例(由您可以在此处找到的文档提供:https://cryptolib.ju.je/#intro)生成一个哈希哈希值,您可以将其作为密钥提供给用户:
// promise version of setTimeout
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
var array = [
function() {
return delay(2000)
.then(() => console.log(0));
},
function() {
return delay(200)
.then(() => console.log(1));
},
function() {
console.log(2);
},
function() {
return delay(70)
.then(() => console.log(3));
}
];
array.reduce((promise, fn) => promise.then(fn), Promise.resolve());
我希望它会对你有所帮助。