请帮助php - > javascript(node.js)转换
$key = crypt($key, $salt);
我正在用node.js重写php脚本,我在php中遇到了哈希签名生成,这是使用crypt()函数和盐匹配“CRYPT_EXT_DES”模式生成的
CRYPT_EXT_DES - 基于DES的扩展哈希。 “salt”是一个9个字符的字符串,由下划线后跟4个字节的迭代计数和4个字节的盐组成。它们被编码为可打印字符,每个字符6位,最不重要字符。值0到63编码为“./0-9A-Za-z”。在salt中使用无效字符将导致crypt()失败。
我对加密并不熟悉,在crypto模块上研究node.js文档并没有帮助。请帮助如何在node.js上实现它!
答案 0 :(得分:0)
crypt(3)库似乎可以正常工作。
例如:
with tmp as (
select
event_id,
jsonb_array_elements(attendees) ->> 'username' as user_name
from
events
)
select
event_id,
count(1)
from
tmp
where
user_name like 'j%'
group by
event_id
order by
event_id;
event_id | count
----------+-------
1 | 2
2 | 1
3 | 1
(3 rows)
然后测试存储的哈希...
const crypt = require( 'crypt3/sync' ),
key = "password",
hash = crypt( key, crypt.createSalt( 'sha512' ) );
(我知道晚了六年)
答案 1 :(得分:0)
您可以使用https://github.com/thomas-alrek/node-php-password
var Password = require("node-php-password");
var options = {
cost: 10,
salt: "qwertyuiopasdfghjklzxc"
};
const hashedPassword = Password.hash(password, "PASSWORD_DEFAULT", options);
这将与php中的结果相同
crypt(password,'$2y$10$'.'qwertyuiopasdfghjklzxc'.'$')
答案 2 :(得分:-1)
如果您正在寻找JavaScript中PHP的crypt()的确切实现,您可能需要查看:
http://phpjs.org/functions/get_extension_funcs/ - 这是一个试图将所有PHP函数移植到JavaScript的项目。
希望这有帮助