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.

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。