我正在使用一个应用程序来解密使用DEC ECB加密并具有8个字符的密钥的文本配置文件。我能够使用MCRYPT生成与https://www.tools4noobs.com/进行测试时匹配的加密结果。
mcrypt_encrypt(MCRYPT_DES, $key, $text, MCRYPT_MODE_ECB, $iv)
我相信编码有问题。当我在记事本中打开加密结果时,我看到了加密的字符串(该字符串与使用tools4noobs.com工具时得到的字符串匹配。当我对我正在使用的应用程序中的示例加密文件执行相同操作时,将得到如下效果:像汉字。
剽⚚侱鮡㾆퓼ᦐ㒉积�竐㉁
[当我在Notepad ++中查看时,我得到的序列不再具有中文字符,看起来更像是我生成的加密文件,但仍然不完全匹配。这两个文件都是ANSI。我的是Windows(CR LF)线格式的单行,匹配的示例是Unix(LF)。
}Rš&±O¡›†?üÔ‰4ãRõ‡ßÐzA2ûœbýdž¹g#—b¼fÇ!ù
似乎不仅仅是我的行格式是错误的。任何建议或方向将不胜感激。
UPDATE 1我在评论中看到了要求提供更好示例的要求。在记事本中比较结果时++]
<?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"; ?>
UPDATE 2
$ key =“ 12345678”;
$ text
[Tone1] Atonelength = 9 Btonelength = 1 Description = ABC Rescue record_delay = 1.5 ignore_after = 5
UPDATE 3
经过一些研究,我相信我的问题与文件编码和/或换行符有关。我尝试匹配的输出文件是UNIX LF,而我尝试的是WINDOWS CR LF。目标类型也是两行。
[当我在Notepad ++中打开两个文件时,它们消除了类似中文的字符,并且我看到前10个字符是匹配的。当我尝试使用在线工具进行十进制编码时,看起来我的文件和目标文件具有相同的内容,只是间距/格式不同。所以我关闭了。
我的问题是,当使用MCRYPT和file_put_contents将其写入文件时,是否可以使用LF将输出设置为UNIX编码?
我正在使用一个应用程序来解密使用DEC ECB加密并具有8个字符的密钥的文本配置文件。我能够使用MCRYPT生成与...
此问题的解决方案归结为填充,以使密文的PHP版本与基于Python的应用程序的加密和解密能力兼容。而且,与最新的MCRYPT相比,最新的openssl能够做到这一点。