我从这里使用aesEncryptWithStaticIV()来加密数据。
对于文本数据"测试",函数给我加密的结果065TnFFNwQFRjPZk6l8luw==
PHP 成功解密了它。
但有了"真实"数据
例如:"
progression|*|D4E1B270-06DD-4A|*|25|*|342|*|159|*|10|*|1457454939636.0
"
php没有正确解密数据,给我"m/^(_2<=Q9KBu#~<,s+z'sS)''nrMc-o|PCxJNo/
"
这是PHP解密功能:
function decrypt($data) {
$code = base64_decode ( urldecode ( $data ) );
$iv = $this->iv;
$td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);
mcrypt_generic_init($td, $this->key, $iv);
$decrypted = mdecrypt_generic($td, $code);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim(preg_replace('/['x00-'x1F'x80-'xFF]/', '', $decrypted));
}
和这里加密数据的过程(由HTTP POST发送):
let dump = try! data.stringByAddingPercentEncodingForRFC3986()!.aesEncrypt()
我不明白为什么它只适用于短/简单的数据?
只需从 php 中删除 urldecode(),不明白为什么,但它会腐蚀数据,但视觉上没有区别......