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个字母的单词,直到其中一个匹配。这不是请求的“解密”。这不是请求的“解密”。