【发布时间】:2012-11-18 09:22:04
【问题描述】:
我正在尝试使用RNCryptor 在 iOS 端进行 AES256 加密,并在 PHP 的远程站点进行 AES256 解密。但我无法使用 php 获得正确的解密数据。如果我做错了什么,请帮助检查。
下面是我的 iOS 代码。
NSString *key = @"1234567890123456789012";
NSData *encryptedData = [RNEncryptor encryptData:data
withSettings:kRNCryptorAES256Settings
password:key
error:&error];
然后我将 encryptedData 发布到 PHP 中的服务器。下面是我的 PHP 代码。
$key ="1234567890123456789012" //32-bit key
$username = aes256Decrypt ($key, $username);
function aes256Decrypt($key, $data) {
if(32 !== strlen($key)) $key = hash('SHA256', $key, true);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC,
str_repeat("\0", 16));
$padding = ord($data[strlen($data) - 1]);
$result = substr($data, 0, -$padding);
return substr($data, 0, -$padding);
}
【问题讨论】:
-
那么你的PHP代码完成解密没有错误,但是结果是错误的?
-
是的。 php完成运行,但结果不正确。
-
RNCryptor 现在提供用于加密的示例 PHP 代码。希望这对于创建解密示例很有用。鼓励拉取请求。 github.com/rnapier/RNCryptor/blob/master/php/encrypt.php
-
@RobNapier 上面的链接不再起作用。
-
PHP 实现已移至其自己的存储库:github.com/RNCryptor/RNCryptor-php
标签: php objective-c encryption aes rncryptor