Unix格式的PHP DES ECB

问题描述 投票:0回答:1

我正在使用一个应用程序来解密使用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我在评论中看到了要求提供更好示例的要求。在记事本中比较结果时++]

我应该得到这个,用目标软件加密的样本数据Goal

我得到的是,通过我的PHP用相同的密钥加密相同的数据My Version w/Same Data/Key

    <?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 encryption des
1个回答
0
投票

此问题的解决方案归结为填充,以使密文的PHP版本与基于Python的应用程序的加密和解密能力兼容。而且,与最新的MCRYPT相比,最新的openssl能够做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.