簡體   English   中英

如何解密地穴(“名稱”)

[英]how to decrypt the crypt(“name”)

如何解密crypt("name")

你不能 文檔中

注意:由於crypt()使用單向算法,因此沒有解密功能。

閱讀文檔有幫助;)

crypt是哈希的一種方式,您無法對其進行解密。

如果您想將其與另一個字符串進行比較,您也可以對其進行加密,然后比較兩個加密的字符串。

crypt —單向字符串哈希

使用兩種方式的哈希

嘗試使用mcrypt

教程

我找到了一個用於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>';

希望對您有所幫助

您無法真正對其進行解密,因為存在(無限)許多字符串,例如crypt($input) == crypt("name") ,但是您可以通過蠻力試驗和錯誤找到其中一些那些弦。

如果您知道或懷疑原始字符串是一個簡短的字典單詞,並且發現一個產生相同輸出的簡短字典單詞,則可能是您“解密了”原始字符串。

md5和許多較弱的哈希函數通常以這種方式被攻擊。

由於crypt()會產生哈希解密,因此是不可能的。 如果您需要猜測原始數據(“名稱”),則可以結合使用蠻力算法和龐大的字典。

<?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!";
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM