gpt4 book ai didi

javascript - CryptoJS 和 PHP SHA256

转载 作者:行者123 更新时间:2023-11-28 01:54:10 24 4
gpt4 key购买 nike

我想同时获得CryptoJS's SHA256和 php 的 Crypt SHA256 输出进行匹配。

PHP crypt 有一个 salt 和多个轮次。例如。 5000 发子弹和“usesomesillystringforsalt”的盐将是;


<code>$hash = crypt('Clear Text String', '$5$rounds=5000$usesomesillystringforsalt$');</code>

我希望我没有盲目,但我找不到如何在 crypto-js 中重现这种行为。它的语法似乎不允许循环或加盐。

是否可能或者我应该使用基本的 PHP hash而不是地穴?

最佳答案

CryptoJS API 不提供指定 SHA256 的盐或轮数的方法。如果需要,您可以手动添加盐,并且指定轮数没有意义,因为“普通”SHA256 始终使用固定的轮数 (64)。

PHP 的轮数 crypt()实际上定义了SHA256算法连续应用的频率,以增加暴力攻击的复杂性。 PHP source code对此的评论如下:“通过SHA256重复运行收集到的哈希值以消耗CPU周期”

正如您在源代码中看到的( herehere ), crypt()实际上是一个 key 派生函数,仅使用 SHA256 生成加密安全的加盐哈希值。因此,它也不是简单地将给定的盐附加到 key 上,而是一个更复杂的过程。

因此,用CryptoJS提供的算法不可能得到相同的结果。

crypt()主要用于密码哈希。因此,如果您需要散列用于其他目的,hash()是一个很好的选择(当然会创建与 CryptoJS.SHA256() 完全相同的结果)。

但是,请记住,任何 JavaScript 加密通常都是 considered harmful 。因此,如果可能的话,您应该更好地在应用程序中使用 SSL,并在服务器端生成哈希值。如果这是一个选项,请查看 bcrypt .

关于javascript - CryptoJS 和 PHP SHA256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19364232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com