问题标签 [crypt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2629 浏览

php - 使用未定义的常量 CRYPT_SHA512

我使用一个 php 脚本,它使用 php 的 crypt 对密码进行哈希处理并使用 SHA512,但是当我尝试检查是否设置了 SHA512 时,我得到了上述错误。当然我知道为什么我会收到这个错误.. php 缺少一些依赖项。我只是不知道那个依赖是什么。

谁能告诉我需要安装什么(在 Ubuntu 服务器上)才能在 PHP 中使用 SHA512?

谢谢!

0 投票
2 回答
2168 浏览

php - mcrypt 可以执行 crypt() 支持的相同算法吗?

我有一个在 PHP 5.3 上运行的应用程序,它存储使用 PHPcrypt()函数散列的密码。但是,默认情况下使用的散列类型 (SHA 512) 在我现在使用的运行 PHP 5.2 的服务器之一上不可用。我已经看到使用 mcrypt 可以获得更多的灵活性,但使用起来也更复杂。

是否可以使用 PHP 的 mcrypt 函数获得与 crypt 相同的结果(使用 SHA512 salt)?

因此,如果我使用 SHA512 盐输入“测试”,则使用 crypt() 和使用 mcrypt() 时加密的数据应该相同。

如果不可能,任何人都可以给我其他建议吗?不幸的是,升级到 PHP 5.3 不是一种选择(它是一个云服务器,我没有时间为此编写脚本)。

0 投票
1 回答
4495 浏览

c - 如何在 Windows 中使用 crypt(3)?

如何在 Windows 平台上从 ac 程序调用 crypt(3)?我找不到要包含的头文件。我安装了带有 gcc 和 msys 的 MinGW。

编辑:作为替代方案,我也会接受一种从 Visual Studio 调用此函数(或等效函数)的方法。

0 投票
2 回答
25841 浏览

php - 如何在 PHP 中使用 Blowfish 创建和存储密码哈希

1) 如何使用 crypt() 创建安全的 Blowfish 密码散列?

1a) “$2a”的意义是什么?它只是表明应该使用 Blowfish 算法吗?
1b) “$07”的意义是什么?较高的值是否意味着更安全的哈希?
1c) “$nGYCCmhrzjrgdcxjH$”的意义是什么?这是要使用的盐吗?这应该是随机生成的吗?硬编码?

2) 你如何存储 Blowfish 哈希值?

2a) 其中哪一部分应该存储在数据库中?
2b) 列(MySQL)应该使用什么数据类型?

3)应该如何验证登录尝试?

0 投票
1 回答
1807 浏览

php - 如何创建 md5 哈希,因为 crypt 函数使用 md5 函数生成 md5 盐,而不是 crypt 函数?

我更喜欢在 php 中使用 crypt 函数来进行密码加密和其他单向加密要求。因为我可以使用任何支持的加密算法,通过更改盐并没有其他优势。通常,我不使用任何盐,它需要随机的 MD5 盐。我将此加密字符串作为密码哈希保存在数据库中,并在验证用户身份时,将其用作 crypt 函数的盐。它在 php 中运行良好。但是当需要任何其他编程语言来创建哈希时,当我在函数的 php 部分使用 crypt 函数时,我们遇到了问题。

我想知道是否有任何简单的方法来创建 MD5 哈希(使用 PHP md5() 函数或其他),这需要类似于使用 MD5 盐时生成的 crypt 函数。如果我能理解它在 php 中的工作原理,而不使用 crypt 函数,那么在其他编程语言中实现的可能性很大。

0 投票
1 回答
11571 浏览

ruby - 使用 ruby​​ 生成格式为 /etc/shadow 的 SHA512 crypt-style hashes?

我想生成 SHA512 散列密码以直接包含到 /etc/shadow 文件中,以便与厨师的用户资源一起使用。通常我会为此去stdlib的Digest库,但它不会以正确的格式生成哈希:

影子文件想要的格式是:

我看过的东西:

  • openssl "dgst" 模块返回与 .hexdigest 相同的格式,并且它的 "passwd" 模块不包括 SHA512 支持。
  • String#crypt,但不支持 SHA512。(编辑:这只是在 OSX 上的情况——如果您指定“$6$somesalt”作为盐,现代 Linux 发行版将工作)
  • ruby-crypt gem,但它不支持 SHA512

相比之下,返回正确格式的东西是 PHP 的crypt,但我宁愿不必为应该简单的东西执行 PHP。

0 投票
4 回答
3155 浏览

php - PHP crypt() 返回错误答案

我想我在这里失去了我的弹珠......我在我的网站上遇到了一个问题,它随机停止接受登录。我现在已经能够追踪到 crypt() 的行为非常奇怪。

在我的数据库中,我有用户密码的加密版本 - 所以我们说 Og12345678。

当用户登录时,他们输入他们的密码,我从数据库中读取盐,然后加密他们输入的内容并进行比较——通常这很好用。

所以我正在做 crypt($enteredPassword, $saltFromDb) - 在这种情况下,盐当然是 Og。通常对于给定的用户密码 crypt 工作正常。

当事情出错时(当他们这样做时,这是一个永久性的改变,直到我重新启动 Apache)我发现 crypt 开始为相同的输入返回一个不同的答案,使用相同的盐。

然而,它是一致的,即一旦系统出错,crypt 返回错误的答案,但它总是返回相同的错误答案。页面的重复刷新显示相同的输出。同样的盐也出现在新的不正确的 crypt 结果中,所以并不是盐在某个地方丢失了。

如果我然后重新启动 Apache 并重新运行脚本而不做任何更改,那么来自 crypt 的结果就会恢复到应有的状态。

我很欣赏它不是最新的 PHP (5.2.8),但会重视对此的任何看法,包括它是否是在更高版本中修复的已知错误(升级 PHP 并不是一项令人愉快的任务,其中有很多网站仍然使用不幸的怪癖每次升级都需要重新测试) - 如果它是一个已知的固定错误,那么显然我会尽快升级它,除此之外,将地穴外包可能会更容易,因为我只在一个中使用它我的网站的共同点。

任何输入表示赞赏。

马特·佩德尔斯登

--- 更新:2011 年 3 月 11 日

更正先前关于操作系统的评论... - 操作系统是 Windows Server 2008 SP1 64 位。道歉我应该仔细检查而不是假设我能记住!机器是戴尔2950 8gb Ram,至强处理器。

我开始按照 Krtek 的建议进行思考——当系统出现问题时,如果我生成新的 crypt()(即一个非常简单的示例,我将变量设置为字符串,对其进行加密,然后与 crypt 进行比较) - 一切都很好。当我重新启动服务器时,它又回到了以前的计算。所以我肯定倾向于改变用于计算 crypt() 结果的算法......关于可能导致这种情况发生的任何想法?我打印出 CRYPT_STD_DES 等的值,它们在重新启动之间不会改变。

有人对可能导致这种情况发生的原因有任何线索吗?

不管是什么,昨天一天似乎发生了两次,最奇怪的是。

感谢迄今为止的答案。

--- 更新:2011 年 3 月 16 日

只是想提供另一个更新。

这仍在发生,仍然没有进一步了解原因。

万一将来有人遇到这种情况,我认为我的解决方案将是做一些讨厌的黑客攻击,将所有 crypt() 执行推送到外部 C# 应用程序,而不必依赖 PHP 来执行它们。某处出了点问题,此时我能看到的唯一解决方案是将其完全从方程式中删除。

当然,如果它仍然发生,那也将很有趣!:)

谢谢大家。

0 投票
4 回答
2698 浏览

mysql - 为什么 MySQL 的 ENCRYPT 在每次调用时返回不同的结果?

我有一个丑陋的服务器问题,我尽量不要忽略这方面的任何细节。

我的虚拟电子邮件用户的密码存储在 MySQL 的ENCRYPT功能中。我的基本想法是我将从旧机器中转储我的虚拟用户表,然后将其导入新机器。

只是为了仔细检查,我尝试再次存储一个字符串ENCRYPT,并且存储的数据不同。这是否意味着我不能像我想的那样简单地导出/导入我的用户?

0 投票
2 回答
836 浏览

php - 使用 crypt 作为密码哈希并比较值?

我决定使用 crypt() 使用盐在我的数据库上加密我的密码,因为经过大量研究,这似乎是最好的选择。

我很好奇为什么这会起作用并得到匹配:

并且像这样进行相同的比较不会:

有任何想法吗?

谢谢。

0 投票
1 回答
429 浏览

php - php异步加密

我正在寻找一种异步加密算法,用 php 对字符串进行数字签名,并使用移动应用程序(主要是 ios 或 android)验证签名。

最简单有效的方法是什么?我可以信任 RSA 还是在双方(移动和 php 服务器端)都实现缓慢且难以实现?如果 RSA 足够好,你能建议我一个好的实现吗?