我正在使用一個(gè)應(yīng)用程序來(lái)解密使用 DEC ECB 加密并具有 8 個(gè)字符密鑰的文本配置文件。我能夠使用 MCRYPT 生成與在https://www.tools4noobs.com/上測(cè)試時(shí)匹配的加密結(jié)果。mcrypt_encrypt(MCRYPT_DES, $key, $text, MCRYPT_MODE_ECB, $iv)我相信我的編碼有問(wèn)題。當(dāng)我在記事本中打開我的加密結(jié)果時(shí),我看到了加密的字符串(與我在使用 tools4noobs.com 工具時(shí)得到的相匹配。當(dāng)我對(duì)我正在使用的應(yīng)用程序中的示例加密文件執(zhí)行相同操作時(shí),我得到了看起來(lái)的東西像漢字。剽?侱鮡????勣??竐休當(dāng)我在 Notepad++ 中查看時(shí),我得到一個(gè)序列,它不再包含中文字符,看起來(lái)更像是我生成的加密文件,但仍然不完全匹配。這兩個(gè)文件都是 ANSI。我的是 Windows (CR LF) 行格式的單行,要匹配的示例是 Unix (LF)。}R?&±O????ü?‰4?R ???DzA2??by??1g#—b?f?!ù似乎不僅僅是我的行格式是錯(cuò)誤的。任何建議或方向?qū)⒉粍俑屑?。更?1 我在評(píng)論中看到了對(duì)更好示例的請(qǐng)求。在 Notepad++ 中比較結(jié)果時(shí)我應(yīng)該得到這個(gè),用目標(biāo)軟件加密的示例數(shù)據(jù).我得到的是這個(gè),相同的數(shù)據(jù)通過(guò)我的 PHP 使用相同的密鑰加密 <?php $iv_size = mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key = "12345678"; $text = file_get_contents('test.cfg'); //echo $text; $crypttext = mcrypt_encrypt(MCRYPT_DES, $key, $text, MCRYPT_MODE_ECB, $iv); echo $crypttext; file_put_contents('test.enc', $crypttext); echo "ENCRYPTION COMPLETE"; ?>更新 2$key = "12345678";$文本[Tone1]Atonelength = 9Btonelength = 1Description = ABC Rescuerecord_delay = 1.5ignore_after = 5更新 3經(jīng)過(guò)一些研究,我相信我的問(wèn)題與文件編碼和/或換行符有關(guān)。我試圖匹配的輸出文件是在 UNIX LF 中,我的嘗試是 WINDOWS CR LF。目標(biāo)類型也是兩行。當(dāng)我在 Notepad++ 中打開這兩個(gè)文件時(shí),消除了類似中文的字符,我可以看到前 10 個(gè)字符是匹配的。當(dāng)我嘗試使用在線工具 dectypt 時(shí),看起來(lái)我的文件和目標(biāo)文件具有相同的內(nèi)容,只是間距/格式不同。所以我很接近。我現(xiàn)在的問(wèn)題是,在使用 MCRYPT 和 file_put_contents 將輸出寫入文件時(shí),有沒(méi)有辦法使用 LF 將輸出設(shè)置為 UNIX 編碼?
Unix 格式的 PHP DES ECB
呼啦一陣風(fēng)
2023-04-21 17:29:31