Php 如何解密密码(“name”)

Php 如何解密密码(“name”),php,Php,如何解密密码(“名称”) crypt-单向字符串哈希 crypt-单向字符串哈希 你不能。从: 注意:没有解密函数,因为crypt()使用单向算法 阅读文档有帮助;) 你不能。从: 注意:没有解密函数,因为crypt()使用单向算法 阅读文档有帮助;) crypt是单向散列,您无法解密它 如果您想将它与另一个字符串进行比较,您也可以对其进行加密,然后比较两个加密的字符串。crypt是单向散列,您无法解密它 如果要将它与另一个字符串进行比较,也可以对其进行加密,然后比较两个加密的字符串。因为cry

如何解密
密码(“名称”)

crypt-单向字符串哈希

crypt-单向字符串哈希

你不能。从:

注意:没有解密函数,因为
crypt()
使用单向算法

阅读文档有帮助;)

你不能。从:

注意:没有解密函数,因为
crypt()
使用单向算法


阅读文档有帮助;)

crypt是单向散列,您无法解密它


如果您想将它与另一个字符串进行比较,您也可以对其进行加密,然后比较两个加密的字符串。

crypt是单向散列,您无法解密它

如果要将它与另一个字符串进行比较,也可以对其进行加密,然后比较两个加密的字符串。

因为crypt()生成哈希解密是不可能的。如果您需要猜测原始数据(“名称”),可以结合使用蛮力算法和大型字典。

因为crypt()生成哈希解密是不可能的。如果您需要猜测原始数据(“名称”),可以结合使用蛮力算法和大型字典。

使用双向哈希

试一试

使用双向散列

试一试


我找到了mcrypt的一个示例,并为文本或二进制文件创建了两个函数:

function MyDecrypt($input,$key){    
        /* Open module, and create IV */
        $td = mcrypt_module_open('des', '', 'ecb', '');
        $key = substr($key, 0, mcrypt_enc_get_key_size($td));
        $iv_size = mcrypt_enc_get_iv_size($td);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        /* Initialize encryption handle */
        if (mcrypt_generic_init($td, $key, $iv) != -1) {
            /* 2 Reinitialize buffers for decryption */
            mcrypt_generic_init($td, $key, $iv);
            $p_t = mdecrypt_generic($td, $input);
                return $p_t;
            /* 3 Clean up */
            mcrypt_generic_deinit($td);
            mcrypt_module_close($td);
        }
} // end function Decrypt()


function MyCrypt($input, $key){
    /* Open module, and create IV */ 
    $td = mcrypt_module_open('des', '', 'ecb', '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($td));
    $iv_size = mcrypt_enc_get_iv_size($td);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    /* Initialize encryption handle */
    if (mcrypt_generic_init($td, $key, $iv) != -1) {
        /* 1 Encrypt data */
        $c_t = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
            return $c_t;
        /* 3 Clean up */
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
    }
}
例如,为字符串加密:

    $original_text = "Hello world !";
    $password = "abc123";
echo '<p>Original_text: '.$original_text.'</p>';
    $crypted_text = MyCrypt($original_text,$password);
echo '<p>Crypted_text: '.$crypted_text.'</p>';
    $decrypted_text= MyDecrypt($crypted_text,$password);
echo '<p>Decrypted_text: '.$decrypted_text.'</p>';

echo '<p>And if I try with a wrong password?</p>';
    $wrong_decrypted_text= MyDecrypt($crypted_text,"wrong_pw");
echo '<p>Decrypted with wrong password: '.$wrong_decrypted_text.'</p>';
$original_text=“你好,世界!”;
$password=“abc123”;
回显“原始文本:”.$Original\u text.

”; $crypted_text=MyCrypt($original_text,$password); 回显“加密文本:”.$Crypted\u text.

”; $decrypted_text=MyDecrypt($crypted_text,$password); 回显“解密文本:”.$Decrypted\u text.

”; 回显“如果我尝试使用错误的密码?

”; $error_decrypted_text=MyDecrypt($crypted_text,“error_pw”); echo“使用错误的密码解密:”.$error\u Decrypted\u text.

”;

希望对您有所帮助

我已经找到了一个mcrypt示例,并创建了两个函数,用于文本或二进制文件:

function MyDecrypt($input,$key){    
        /* Open module, and create IV */
        $td = mcrypt_module_open('des', '', 'ecb', '');
        $key = substr($key, 0, mcrypt_enc_get_key_size($td));
        $iv_size = mcrypt_enc_get_iv_size($td);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        /* Initialize encryption handle */
        if (mcrypt_generic_init($td, $key, $iv) != -1) {
            /* 2 Reinitialize buffers for decryption */
            mcrypt_generic_init($td, $key, $iv);
            $p_t = mdecrypt_generic($td, $input);
                return $p_t;
            /* 3 Clean up */
            mcrypt_generic_deinit($td);
            mcrypt_module_close($td);
        }
} // end function Decrypt()


function MyCrypt($input, $key){
    /* Open module, and create IV */ 
    $td = mcrypt_module_open('des', '', 'ecb', '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($td));
    $iv_size = mcrypt_enc_get_iv_size($td);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    /* Initialize encryption handle */
    if (mcrypt_generic_init($td, $key, $iv) != -1) {
        /* 1 Encrypt data */
        $c_t = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
            return $c_t;
        /* 3 Clean up */
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
    }
}
例如,为字符串加密:

    $original_text = "Hello world !";
    $password = "abc123";
echo '<p>Original_text: '.$original_text.'</p>';
    $crypted_text = MyCrypt($original_text,$password);
echo '<p>Crypted_text: '.$crypted_text.'</p>';
    $decrypted_text= MyDecrypt($crypted_text,$password);
echo '<p>Decrypted_text: '.$decrypted_text.'</p>';

echo '<p>And if I try with a wrong password?</p>';
    $wrong_decrypted_text= MyDecrypt($crypted_text,"wrong_pw");
echo '<p>Decrypted with wrong password: '.$wrong_decrypted_text.'</p>';
$original_text=“你好,世界!”;
$password=“abc123”;
回显“原始文本:”.$Original\u text.

”; $crypted_text=MyCrypt($original_text,$password); 回显“加密文本:”.$Crypted\u text.

”; $decrypted_text=MyDecrypt($crypted_text,$password); 回显“解密文本:”.$Decrypted\u text.

”; 回显“如果我尝试使用错误的密码?

”; $error_decrypted_text=MyDecrypt($crypted_text,“error_pw”); echo“使用错误的密码解密:”.$error\u Decrypted\u text.

”;

我希望对您有所帮助

您不能真正解密它,因为有(无限)多个字符串,例如
crypt($input)==crypt(“name”)
——但是您可以通过暴力尝试和错误,找到其中的一些字符串

如果您知道或怀疑原始字符串是一个简短的字典单词,并且您发现一个简短的字典单词产生相同的输出,那么很可能您已经“解密”了原始字符串


许多较弱的散列函数通常都会受到这种方式的攻击。

您无法真正解密它,因为有(无限)多个字符串,例如
crypt($input)=crypt(“name”)
——但您可以通过蛮力试错找到其中的一些字符串

<?php

$hashed_password = crypt('mypassword'); // let the salt be automatically generated

/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
   echo "Password verified!";
}

?>
如果您知道或怀疑原始字符串是一个简短的字典单词,并且您发现一个简短的字典单词产生相同的输出,那么很可能您已经“解密”了原始字符串

许多较弱的散列函数通常会以这种方式受到攻击。


<?php

$hashed_password = crypt('mypassword'); // let the salt be automatically generated

/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
   echo "Password verified!";
}

?>


只需选择提供的一种算法,如果您想加密/解密,请选择提供的一种算法,然后签出。如果您想加密/解密,请签出。即使如此,您仍将难以获得任何位置,crypt会随机制造盐,所以你所做的所有暴力强迫都不会太远。即使你在任何地方都会挣扎,crypt会随机制造盐,所以你所做的所有暴力强迫都不会太远。请注意,DES是非常不安全的,应该首选更强的替代品(比如AES);此外,使用ECB也是一个坏主意——CBC对于大多数应用来说更安全。请注意,DES是非常不安全的,应该首选更强大的替代品(比如AES);而且使用ECB也是一个坏主意——CBC对于大多数应用程序来说更安全。如果你知道输入是一个4个字母的单词。。。您可以尝试所有4个字母的单词,直到其中一个匹配。如果您知道输入是4个字母的单词。。。您可以尝试所有4个字母的单词,直到其中一个匹配。这不是请求的“解密”。这不是请求的“解密”。