客户端使用Cipher.encrypt()函数(来自某些我不知道的编程语言)向我发送了加密邮件,详情如下:
var key : String = "I deleted the key intentionally";
var encodedKey : Bytes = Encoding.toBase64(new Bytes(key, "UTF8"));
var salt : String = "263BC60258FF4876";
var message : String = "1234567891234567";
var encryptAlgorithm : String = "AES/CBC/PKCS5Padding";
var encryptedMessage : Cipher = new Cipher();
encryptedMessage = encryptedMessage.encrypt(message, encodedKey, encryptAlgorithm, salt, 1);
我需要解密消息,以便使用PHP从中提取数据。 我试过使用php函数mcrypt_decrypt:
string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )
但我无法解密消息,因为2个函数似乎有不同的参数。
那么有没有人对如何使用PHP解密消息有任何建议?
答案 0 :(得分:0)
以下行没有意义,它似乎是"向后"。
var encodedKey : Bytes = Encoding.toBase64(new Bytes(key, "UTF8"));
假设密钥是Base64编码的(这是合理的),人们会期望将其解码为字节数组,Encoding.toBase64
似乎不正确。但这是一个任务,因为语言未知,请询问客户语言是什么。
接下来看来消息是用PKCS#5填充加密的,而mcrypt不支持。有几种解决方案:1。删除PHP代码中的填充。 2.使用支持PKCS#5填充的更好的库,例如defuse。
有价值的salt
可能是IV(初始化向量)命名不佳。