标签: crypt

是否有perl模块来验证存储在"{crypt} hashedpassword"中的密码"{ssha} hashedpassword""{md5} hashedpassword"

我有一个存储用户登录信息的表,其中包含以下方案中的密码

  • {}隐窝hashedpassword
  • {SSHA} hashedpasswordsalted
  • {} MD5 hashedpassword
  • .....

是否有一个了解此方案的perl模块,并且能够在给定明文密码的情况下验证密码?

就像是

打印"success !! \n"如果validatePassword("helloworld",{CRYPT} r2sKInajXZ6Fk)

谢谢.

encryption perl crypt

2
推荐指数
1
解决办法
719
查看次数

存储bcrypt哈希值

根据PHP的文档,bcrypt salt是由

"$ 2a $",两位数的成本参数"$",以及字母"./0-9A-Za-z"中的22位数字

因此,如果我使用crypt()函数来哈希我的密码,结果输出包括前七个字符($ 2a $ 10 $,如果10是成本参数)作为盐的一部分 - 并且,根据所有示例我能够在互联网上找到这个完整的输出写入db.

我想知道将剩下的盐和加密数据存储在第一个字符的重点是什么.他们的意思对我来说是完全清楚的,但是我无法理解为什么这些信息应该与哈希的其余部分一起编写.它们不是关于算法的"正义"信息和计算的自适应成本吗?那么存储此类与应用程序相关的信息有什么好处?并且(即使可能听起来很幼稚)为什么要将它们泄露给最终可以抓住我的数据库的攻击者呢?

php hash crypt bcrypt password-storage

2
推荐指数
1
解决办法
2288
查看次数

PHP:crypt()函数返回相同的字符串,如果基本字符串只有轻微的变化

我有使用crypt的问题.我正在为客户重建一个网站.因此,以前的版本中有很多继承的代码.我必须保持站点原始数据库,所以我必须小心我改变代码的方式.之前的开发人员使用crypt()函数创建用于存储的用户密码哈希.我看到的奇怪效果是,相同密码的轻微变化有时会创建完全相同的哈希.我不太了解地穴如何运作,但在我看来,这不应该发生.这里有一些代码作为例子.

echo crypt('Colliedog6','wfd')."\n";
echo crypt('Colliedog10','wfd')."\n";
Run Code Online (Sandbox Code Playgroud)

这将在我的服务器上返回相同的哈希字符串.我正在使用那个salt字符串,因为这是以前的开发人员使用的,所有当前的密码都是使用该salt字符串制作的,所以我真的需要使用它,除非我们想强制所有用户重置密码.这不一定是不可能的,但我们想避免它.为什么crypt会像上面那样使用两个稍微不同的字符串并创建相同的哈希?

php crypt

2
推荐指数
1
解决办法
864
查看次数

在不支持它的php 5.2上使用CRYPT_BLOWFISH

我正在我的网页上PHP 5.2不支持CRYPT_BLOWFISH,但是CRYPT_MD5,并且已经听说河豚比MD5更加安全.

由于我不是主管,我无法将PHP升级到支持它的版本.

CRYPT_BLOWFISH在PHP 5.2上使用有什么黑客攻击吗?

和,

$hash_key = crypt($something, '$2a$anySalt');
Run Code Online (Sandbox Code Playgroud)

在第一面正确贴上"$ 2a $"?

很困惑.

附言:如果我用crypt()CRYPT_BLOWFISH,将在bcrypt工作做好crypt()的功能?

php crypt blowfish php-5.2

2
推荐指数
1
解决办法
2869
查看次数

PHP crypt函数密码编码

以下代码以任何方式返回相同的加密密码.为什么以及如何阻止这种情况.

$pwd = 'shits8888';
$salt = '50153fc193af9';

echo crypt($pwd,$salt)
Run Code Online (Sandbox Code Playgroud)

显然有些东西丢失了,因为这会返回相同的东西

$pwd = 'shits8888hjhfgnsdkjf8744884';
$salt = '50153fc193af9';

echo crypt($pwd,$salt)
Run Code Online (Sandbox Code Playgroud)

php crypt salt

2
推荐指数
1
解决办法
1062
查看次数

PHP Crypt()比较两个加密的字符串

是否可以比较两个cryptDocs -ed字符串并查看它们是否匹配?

用户登录时,会创建一个会话,存储用户的ID及其对应的crypt密码哈希值.在后台,检查一直在运行,以查看会话(读取,密码)是否仍然有效.

所以从技术上讲,我想比较crypt数据库中的-ed密码和会话中的加密密码.这可能吗?

编辑:

应该说我使用以下方法来加密密码;

    function better_crypt($input, $rounds = 7)
  {
    $salt = "";
    $salt_chars = array_merge(range('A','Z'), range('a','z'), range(0,9));
    for($i=0; $i < 22; $i++) {
      $salt .= $salt_chars[array_rand($salt_chars)];
    }
    return crypt($input, sprintf('$2a$%02d$', $rounds) . $salt);
  }
Run Code Online (Sandbox Code Playgroud)

php crypt

2
推荐指数
1
解决办法
5000
查看次数

为什么在glibc中使用crypt导致编译器警告?

我尝试编译以下代码(最小例子,请参阅整个代码的编辑):

// a.c
#include <stdio.h>

#define _XOPEN_SOURCE
#include <unistd.h>

int main(int argc, char* argv[])
{
    puts((const char*) crypt("AAAA", "$6$2222"));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用clang-7 -lcrypt a.c并发出以下警告:

minimum.c:8:24: warning: implicit declaration of function 'crypt' is invalid in C99 [-Wimplicit-function-declaration]
    puts((const char*) crypt("AAAA", "$6$2222"));
                       ^
minimum.c:8:10: warning: cast to 'const char *' from smaller integer type 'int' [-Wint-to-pointer-cast]
    puts((const char*) crypt("AAAA", "$6$2222"));
         ^
2 warnings generated.
Run Code Online (Sandbox Code Playgroud)

./a.out似乎确实有效:

$6$2222$6GKY4KPtBqD9jAhwxIZGDqEShaBaw.pkyJxjvSlKmtygDXKQ2Q62CPY98MPIZbz2h6iMCgLTVEYplzp.naYLz1
Run Code Online (Sandbox Code Playgroud)

我发现如果我删除#include <stdio.h>puts喜欢这个:

// new_a.c
#define _XOPEN_SOURCE
#include …
Run Code Online (Sandbox Code Playgroud)

c crypt glibc clang compiler-warnings

2
推荐指数
1
解决办法
61
查看次数

使用pgcrypto验证password_hash生成的密码

我将密码哈希值存储在使用以下命令生成的 Postgresql 数据库中:

password_hash($password, PASSWORD_DEFAULT);

现在我还希望能够使用 Postgresql 和 pgcrypto 验证用户密码。

但 pgcrypto 的crypt()功能无法验证现有的密码哈希值。

但是 - 我可以使用 PHP 验证 Postgresql 生成的密码哈希值password_verify

例如:

password_hash('hello', PASSWORD_DEFAULT);
$2y$10$fD2cw7T6s4dPvk1SFHmiJeRRaegalE/Oa3zSD6.x5WncQJC9wtCAS
Run Code Online (Sandbox Code Playgroud)
postgres=# SELECT crypt('hello', gen_salt('bf'));
                            crypt                             
--------------------------------------------------------------
 $2a$06$7/AGAXFSTCMu9r.08oD.UulYR0/05q7lmuCTC68Adyu/aNJkzpoIW
Run Code Online (Sandbox Code Playgroud)

确认:

// php_verify with the Postgresql hash
php > var_dump(password_verify('hello', '$2a$06$7/AGAXFSTCMu9r.08oD.UulYR0/05q7lmuCTC68Adyu/aNJkzpoIW'));
bool(true)

Run Code Online (Sandbox Code Playgroud)
postgres=# SELECT crypt('hello', '$2y$10$fD2cw7T6s4dPvk1SFHmiJeRRaegalE/Oa3zSD6.x5WncQJC9wtCAS');
     crypt     
---------------
 $2JgKNLEdsV2E
(1 Zeile)
Run Code Online (Sandbox Code Playgroud)

我的问题基本上是:

  • 我做错了吗?
  • 如果这是不可能的:是否有迁移路径可以实现这一点?

php postgresql crypt pgcrypto

2
推荐指数
1
解决办法
2153
查看次数

验证system32/drivers文件夹中的数字签名

我花了一整夜时间研究这个没有解决方案.

我正在尝试验证驱动器文件夹(C:\ Windows\System32\drivers*.sys)中文件的数字签名选择您想要的任何内容.我知道代码是正确的,因为如果你将文件从该文件夹移动到C:\测试工作.

WinVerifyTrust给出错误80092003 http://pastebin.com/nLR7rvZe

CryptQueryObject给出错误80092009 http://pastebin.com/45Ra6eL4

这是怎么回事?

c++ winapi crypt winverifytrust

1
推荐指数
1
解决办法
3040
查看次数

对于不同的字符串和salt,PHP .crypt()结果相同

因为我使用的是旧版本的PHP,所以我必须使用.crypt().我正在测试一些密码验证,服务器验证错误的密码是正确的.然后我决定尽可能进行最基本的测试,我仍然有这个问题:

<?php
echo crypt("cryptcryptcrypt","salt");
echo "<br>";
echo crypt("cryptcryptcrypta","salta");
?>
Run Code Online (Sandbox Code Playgroud)

- 结果是:

saRyxun8Pn/K6
saRyxun8Pn/K6
Run Code Online (Sandbox Code Playgroud)

为什么这是hapening?


出于测试目的,我正在使用PhpFiddle,因此您在回答时可能会发现这很有用......

php security crypt cryptography password-encryption

1
推荐指数
1
解决办法
226
查看次数