我想使用Blowfish哈希来哈希密码.
crypt() 在5.3之前的PHP版本中不支持它 
我的PHP版本是5.2.14.我怎样才能使用Blowfish哈希?我可以使用PEAR Crypt_Blowfish吗?
我正在使用Python的crypt包来保存Django网站的MySQL数据库中的加密密码.我不确定这是不是一个bug,但这是我正在使用的代码:
要加密/保留密码:
user.password = crypt(request.POST['password'], netid)
user.save()
要在登录时检查密码是否正确:
if crypt(password, email) == user.password:
# Grant acccess to the user's profile, etc.
问题如下.如果我有可变密码进行加密netid = test@example.com和request.POST['password'] = 'ABC123abc',它工作正常.但是,当我尝试登录时,如果我使用密码'ABC123abc[trailing_chars]',其中trailing_chars可以是任何有效的字符串,我仍然可以登录.为什么会这样?它本身就是一个很大的安全漏洞.
我只是在弄乱我是否可以使用'crypt'模块而且我似乎遇到了一个我无法解决的问题.运行之后的输出是这样的:
Password Not Found. secret HXXxJi0n6Huro HXXxJi0n6Huro
这意味着cryptWord和cryptPass是相同的,所以为什么程序不执行(if cryptWord == cryptPass:),和print 'Found Password:
我根本没有得到它.
dictionary.txt文件中只有多个单词secret,都在不同的行上.而且evil.txt文件有这一行:
test_user:HXXxJi0n6Huro
据我所知,一切正常吗?但有些东西正在从正常工作中恢复过来,我无法弄明白.任何帮助,将不胜感激.
import crypt
def testPass(cryptPass):
        salt = cryptPass[0:2]
        dictFile = open('dictionary.txt', 'r')
        for word in dictFile.readlines():
            word = word.strip('\n')
            cryptWord = crypt.crypt(word, salt)
            if cryptWord == cryptPass:
                print "[+] Found Password: "+word+"\n"
                return
        print "[-] Password Not Found. " +word,  cryptWord,  cryptPass+  "\n"
        return
def main():
    passFile= open('evil.txt')
    for line in passFile.readlines():
        if ":" in line:
            user = line.split(':')[0]
            cryptPass = …我用bcrypt哈希我的密码(因为我运行php 5.3.10 实际上是用password_compat)
我想把函数的结果字符串分成两部分:使用的盐和哈希本身.(我知道使用password_verify()来验证密码.但是我需要使用哈希作为密钥来加密更广泛的安全系统中的私钥.)
对于给定的密码(abcdef),这是结果:
 $2y$10$ult68Ti4/zEWX4VQ       ....           YCOWjL6
我已经改变了一点功能,吐出了concat,salt,hash和hash_format.
 ... from the password_compat ...
 $salt = substr($salt, 0, $required_salt_len);
 $hash = $hash_format . $salt;
 $ret = crypt($password, $hash);
 if (!is_string($ret) || strlen($ret) <= 13) {
        return false;
 }
 return array( 'concat'=>$ret, 
               'salt'=>$salt, 
               'format'=>$hash_format,
               'hash_format'=>$hash);
我想结果哈希是的一个CONCAT $hash_format,$salt以及hash......但最后一个字符是不同的...
                                               _
[concat] =>        $2y$10$oWfFYcNqlcUeGwJM0AFUguSJ5t  .....  SvWG
[salt] =>                 oWfFYcNqlcUeGwJM0AFUgw
[hash_format] =>   $2y$10$oWfFYcNqlcUeGwJM0AFUgw
[format] =>        $2y$10$
                                               ^
正如您所看到的,在crypt函数之前和函数之后,salt中的最后一个字符是不同的.
这怎么可能?
我想libtomcrypt在C#for Encrypt-Decrypt中使用该工具包.我不熟悉C,所以帮助我.工具包的链接:http://www.libtom.org/? page = feature&newsitems = 5& whatfile = crypt
我在GoLang工作我的授权模块.在我们使用PHP5和crypt函数之前.哈希的生成方式与SHA-512相同:
$6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
并存储在数据库中.但现在我需要让它在GoLang中运行.我在Google上搜索并尝试了不同的东西,例如:
t512 := sha512_crypt.Crypt("rasmuslerdorf", "$6$usesomesillystringforsalt$")
fmt.Printf("hash: %v\n", t512)
但都会产生不同的东西.谁能进一步帮助我们?
我们想要验证并创建像php版本一样的哈希.
提前致谢.
我正在使用此函数生成密码:
function generarPassword($password, $cost=11){
    $salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
    $salt='$'.implode('$',array("2y",str_pad($cost,2,"0",STR_PAD_LEFT),$salt));
    return crypt($password,$salt);
}
我的问题是,当我在64位服务器上使用它时,结果如下:
$2y$11$1ws6drmcqHCWG8wj5bm5s.R8Opc0.JEjXy0.P9UsHjqoxjZQ5GYLW
当我在32位服务器上使用它时,结果如下:
$2uUq69/OVG3M
所以,我有两个问题:
$salt是在两个相同的长度谢谢!
<?php
  echo 'SHA-512:' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$');
输出:
SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
它只使用16个字符的盐:usesomesillystri
Refs: crypt - 单向字符串哈希
题:
提前致谢.
我的 Debian Stretch (9) 上安装了 PostgreSQL 9.6。当我想使用crypt()或gen_salt()函数时,它说:
ERROR:  function gen_salt(unknown, integer) does not exist
LINE 1: select gen_salt('bf', 8)
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
我怎样才能让这些功能正常工作?
我使用crypt()加密我的项目的密码。用户选择密码后,将按以下方式进行加密:
password = crypt(<password chosen>, <user's account name>)
问题是用户使用密码登录时。如果输入的内容与密码不匹配,请检查以下内容:
if (strcmp(crypt(<what user types in as password>, <user's account name>), <user's encrypted password>)) {
   //...
}
在某种情况下它不是。假设他们的密码是“ asdf”。如果他们输入带有任何随机结尾字符的“ asdf”,例如“ asdffffff”或“ asdf339sfd”,则该密码仍会接受。似乎忽略了“ asdf”之后的所有内容。
这是隐窝的已知问题吗?还有另一种加密密码的方法吗?