客户正在向我们发送使用" AES-256"加密的文件。它作为一个二进制文件到达(我通常得到base64编码的文件,但这应该没问题),并且在绝望中,我使用mcrypt_decrypt迭代了PHP选项,但无法破解它。
<?php
$str = file_get_contents($argv[1]);
$key ='jimminny fred owns apple'; //not the actual one, but same length
$modes = array(
MCRYPT_MODE_ECB,
MCRYPT_MODE_CBC,
MCRYPT_MODE_CFB,
MCRYPT_MODE_OFB,
MCRYPT_MODE_NOFB);
$cryps = array(
MCRYPT_RIJNDAEL_128,
MCRYPT_RIJNDAEL_256,
MCRYPT_RIJNDAEL_192);
foreach($modes as $mode){
foreach($cryps as $cryp){
echo "\n\n$cryp $mode\n\n";
echo mcrypt_decrypt($cryp, $key, $str, $mode);
}
}
我的理解是我应该收到一个32字节的密钥,而不是一个24字的密码短语,但是他们正在使用一个名为GlobalScape的程序,这就是它所需的全部内容#Rijndael&#39;加密。 (参见附图显示客户在其末尾完成的对话窗口)。
答案 0 :(得分:0)
我检查了网站,GlobalScape没有提供有关加密方式的任何详细信息。它们不仅没有指定用于“Rijndael”加密的密钥派生函数(KDF)。他们不太可能直接使用密码作为密钥 - 除非他们是完整的布偶 - 但KDF可能是任何东西。他们没有指定AES的操作模式
根本不要使用那样的垃圾。只需使用PGP或其中一个标准化选项来发送/接收消息。
进行野鹅追逐对你没有帮助。即使你编写了一个解决方案,但由于许多因素,它可能会在将来失败。要求您的客户明确指定协议,而不是为您提供屏幕截图。