javascript - Javascript 中的 Symfony2 密码编码器函数

标签 javascript php symfony password-encryption cryptojs

我使用 FOSUserBundle 和 FOSRestBundle 创建了一个 Symfony2 应用程序。我想使用 rest api 将其他应用程序与我的 Symfony 应用程序连接起来。 我需要用 Javascript 编写 Symfony 密码编码器函数。 实际上在 PHP 中,它是这样的:

$salt = "secret";
$password = "azerty";
$salted = $password.'{'.$salt.'}';
$digest = hash('sha512', $salted, true);

for ($i = 1; $i < 5000; $i++) {
    $digest = hash('sha512', $digest.$salted, true);
}
$digest = base64_encode($digest);

return $digest;

在 Javascript 中,我尝试使用 CryptoJS 库。我的代码是:

var salt = 'secret',
    password = 'azerty',
    salted = password + '{' + salt + '}'
    digest = CryptoJS.SHA512(salted);

for (var i=1; i<5000; i++) {
    digest = CryptoJS.SHA512(digest+salted);
}

digest = digest.toString(CryptoJS.enc.Base64);

return digest;

但是你猜怎么着?它不起作用,我不知道为什么。 有人可以帮忙吗? :)

问候, 科尔扎克。

最佳答案

好的,@timothymctim 的回复帮助了我。实际上,我认为这是关于字符编码的问题。 这是一个(奇怪的)解决方案:

PHP:

$salt = "secret";
$password = "azerty";
$salted = $password.'{'.$salt.'}';
$digest = hash('sha512', $salted, true);

for ($i = 1; $i < 5000; $i++) {
    $digest = hash('sha512', utf8_encode($digest).$salted, true);
}
$digest = base64_encode($digest);

return $digest;

还有 Javascript:

var salt = 'secret',
password = 'azerty',
salted = password + '{' + salt + '}'
digest = CryptoJS.SHA512(salted);

for (var i=1; i<5000; i++) {
    digest = CryptoJS.SHA512(digest.toString(CryptoJS.enc.Latin1)+salted);
}

digest = digest.toString(CryptoJS.enc.Base64);

return digest;

我不知道该怎么想。 无论如何,感谢所有帮助过的人!

关于javascript - Javascript 中的 Symfony2 密码编码器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928509/

相关文章:

php - Symfony2 验证可选字段

javascript - 如何在 Cytoscape JS 中设置节点的位置

php - TYPO3:带有参数和依赖注入(inject)的 Symfony 命令

javascript - PyCharm:在 Django 模板中调试 Javascript

php - 阻止数据库中的 html 影响网页上的其他元素

php - 如何在php中解包数组

php - 与 Symfony2 AsseticBundle 和 'non existing routes' 冲突

symfony - 在 Symfony 2 应用程序中使用 Redis 缓存 Doctrine 结果

javascript - 空 XmlHttp 响应文本(仅限 Google Chrome)

javascript - 为文本文件中的每个项目添加引号