iOS AES加密和PHP解密

我试图在iOS中加密一个字符串并用PHP解密。

在iOS中,我有以下代码,基于此链接中的信息iOS中的AES-128加密和PHP中的解密

- (void)testCrypto {
    NSString *password = @"1234567891234567";
    NSString *plaintext = @"This is a test";
    NSString *encrypted = [plaintext AES128EncryptWithKey:password];

    dispatch_queue_t jsonParsingQueue = dispatch_queue_create("jsonParsingQueue", NULL);
    dispatch_async(jsonParsingQueue, ^{
        NSString *webResult = [EPWebServices cryptoData:[encrypted dataUsingEncoding:NSUTF8StringEncoding] password:password];
        [self performSelectorOnMainThread:@selector(testing:) withObject:webResult waitUntilDone:YES];
    });
}

- (void)testing:(id)test {
    test = [[NSString alloc] initWithData:test encoding:NSUTF8StringEncoding];
    NSLog(@"Result:%@", test);
}

上面用于加密的NSData类别位于链接中。 EPWebServices是一个将密文转换为base64并使用密码和密文向服务器发送URLRequest的类。

在PHP中,我也有(也从上面的链接):

$Pass = $_GET['pw'];
$crypted = urldecode($_GET['encrypted']);        
$newClear = decrypt_password($crypted, $Pass);
echo "Dec: ".$newClear . "Input: ".$crypted;


function decrypt_password($pass,$key)
{
$base64encoded_ciphertext = $pass;

$res_non = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($base64encoded_ciphertext), ‘ecb’);
$decrypted = $res_non;
$dec_s2 = strlen($decrypted);

$padding = ord($decrypted[$dec_s2-1]);
$decrypted = substr($decrypted, 0, -$padding);

return  $decrypted;
}

问题是解密的消息只是一个空字符串。 我在NSLog中得到的结果只是Dec:Input: ejhCNHo0Z2tNZ0paMGdJOTJLdEJjZz09 。 我已确认在PHP中正确接收密码和密文,但解密仅打印出空字符串。 我对加密很陌生,所以可能会出现一些基本错误。 请让我知道是否需要特定的输出/ NSLog等。

链接地址: http://www.djcxy.com/p/68333.html

上一篇: iOS AES encryption and PHP decryption

下一篇: RNCryptor PHP encrypt function returns invalid base64 data