AES - 用户密钥长度

AES - user key length

上下文

我正在学习 ssl 通信的基础知识,尤其是 AES 加密。 我阅读了 OpenSSL 代码并看到了一个指向名为 userkey.

的指针
int private_AES_set_encrypt_key( const unsigned char *userKey , const int bits , AES_KEY *key )

在文件“aes_core.c”中

问题

  1. userkey从何而来?它是如何产生的?

  2. 我想知道不同版本的 AES userkey 的实际大小。

    256 位版本是 256 / 8 = 32,192 是 24,128 是 16?我有点迷茫。

  3. 如果 userkey 长度是可变的,那么我应该如何为那些符合长度要求的输入创建安全输入? (哈希?哪个?)

  1. userkey = secure sequence of bytes, 128 bits = 16 bytes 256 = 32 bytes 192 = 24 bytes long, 比较容易理解的密码。 很好地讨论了密钥大小之间的差异 here.

  2. 算法的密钥长度是常量,在 'bits' 参数中指定(以位为单位!)

OpenSSL 有两个 AES API:first you are dealing with, second EVP API。将 EVP 用于真正的非测试应用程序。