du7979 2018-09-06 09:31
浏览 1342

PHP AES 128位加密/解密

I'm trying to understand how to AES encrypt a piece of text(16 bytes - 128 bits). This code is from php manual:

$key = openssl_random_pseudo_bytes(32);
$plaintext = "message to be encrypted";
$cipher = "aes-128-gcm";
if (in_array($cipher, openssl_get_cipher_methods()))
{
    $ivlen = openssl_cipher_iv_length($cipher);
    $iv = openssl_random_pseudo_bytes($ivlen);
    $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
    //store $cipher, $iv, and $tag for decryption later
    $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
    echo $original_plaintext."
";
}

The only problem with this is that i don't really understand it. $cipher is aes-128-gcm but i'm getting a 32 bytes encryption.

So my questions are: Can somebody help me understand how it actually works?

Is it possible to make it 16 bytes/128 bites?

And is it safe to store $cipher, $iv, $key and $tag into a MySQL database for later use?

P.S: if i change $key length to 16 instead of 32 the final output of $ciphertext is still 32 bytes.

Thank you!

  • 写回答

1条回答 默认 最新

  • dongyu4863 2018-09-12 03:22
    关注

    The only problem with this is that i don't really understand it. $cipher is aes-128-gcm but i'm getting a 32 bytes encryption.

    AES-GCM is an authenticated cipher. If you're trying to learn how the basic building block works, you want to play with aes-128-ecb instead.

    If you want a real-world encryption mode, you want to keep using GCM, never ECB.

    And is it safe to store $cipher, $iv, $key and $tag into a MySQL database for later use?

    You can store everything except the key, safely. The key lets you decrypt.

    评论

报告相同问题?

悬赏问题

  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误