簡體   English   中英

PHP中的RNCryptor AES256加密和解密

[英]RNCryptor AES256 encryption and decryption in PHP

我正在嘗試使用RNCryptor在iOS端進行AES256加密,並在PHP的遠程站點中進行AES256解密。 但是我無法使用php獲取正確的解密數據。 如果我做錯了任何事情,請幫助檢查。

下面是我的iOS代碼。

 NSString *key = @"1234567890123456789012";
 NSData *encryptedData = [RNEncryptor encryptData:data
                                    withSettings:kRNCryptorAES256Settings
                                        password:key
                                           error:&error];

然后,我將加密數據發布到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);
}

根據一些快速研究,似乎RNCryptor具有自己的輸出格式 下面顯示了一個示例(摘自我鏈接的頁面):

DESCRIPTION: | version/cryptor | options | encryptionSalt | HMACSalt |  IV   | ... ciphertext ... |   HMAC   |
 BYTE INDEX: |        0        |    1    |      2-9       |  10-17   | 18-33 | <-      ...     -> | n-32 - n |

您的PHP代碼將必須在嘗試解密之前從這種格式中提取數據。 您將需要IV值和密文以檢索原始明文。

或者,切換到iOS的另一種加密方法,該方法不會發明自己的數據格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM