簡體   English   中英

使用phpseclib進行AES加密

[英]AES encryption using phpseclib

有人可以幫助我進行AES嗎? 我已經在加密和解密數據中使用了phpseclib,但是,它似乎無法解密數據。 請參閱下面的代碼。 我想解密其他頁面上的數據。 提前致謝!

$base64 = "AAA";

$cipher = new Crypt_AES(); 
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
echo $encrypted = $cipher->encrypt($base64); 


$cipher = new Crypt_AES(); 
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
echo 'decrypted:'.  $cipher->decrypt($encrypted);

結果

% NK y 0 k :解密:

更新:

這是否意味着有必要保留一個初始化向量列表以便解密數據?

更新:

我決定使用Lumen Framework。 流明具有內置的加密功能,可處理IV和其他加密技術內容。 謝謝你的幫助!

在兩種情況下,您都使用不同的IV-您需要使用相同的IV。 嘗試這個:

$base64 = "AAA";
$iv = crypt_random_string($cipher->getBlockLength() >> 3);

$cipher = new Crypt_AES(); 
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV($iv);
echo $encrypted = $cipher->encrypt($base64); 


$cipher = new Crypt_AES(); 
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV($iv);
echo 'decrypted:'.  $cipher->decrypt($encrypted);

使用隨機生成的IV進行加密。 IV不需要是秘密的,因此只需在IV前面加上加密數據即可。 然后,IV可用於解密。

加密密鑰'QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo'為512位(64字節),但是只有三種AES密鑰大小:128、192和256位。

您正在使用一個庫。 為什么不使用openssl_encrypt()

對於加密:

openssl_encrypt($text, $method, $key);

參數:

  1. $text :您要加密的文本。
  2. $method :用於加密的方法。 我主要使用AES-256-ECB
  3. $key :用於加密的密鑰。

例:

$data = openssl_encrypt('Hello', 'AES-256-ECB' 'test');

解密:

openssl_decrypt($encrypted_text, $method, $key);

參數:

  1. $encrypted_text$encrypted_text的文本。
  2. $method :用於解密的方法。
  3. $key :解密文本的密鑰。

例:

openssl_decrypt($data, 'AES-256-ECB', 'test');

暫無
暫無

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

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