当前位置: 首页 > 知识库问答 >
问题:

AES -用户密钥长度

孔波
2023-03-14

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

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

在文件"aes_core. c"中

>

  • 用户密钥从何而来?它是如何生成的?

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

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

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

  • 共有1个答案

    米景辉
    2023-03-14

    >

  • 用户密钥 = 安全字节序列,128 位 = 16 字节 256 = 32 字节 192 = 24 字节长,如果更容易理解,则为密码。这里很好地讨论了密钥大小之间的差异。

    请说。

    密钥的长度对于算法来说是恒定的,并在“bits”参数中指定(以位为单位!)

    OpenSSL有两个AES API:第一个是你正在处理的,第二个是EVP API。将EVP用于真正的非测试应用程序。

  •  类似资料:
    • 我被要求为安全类实现AES算法。在实现过程中,我找不到答案,我如何从用户那里接受像密码这样的任意长度的密钥,并将其转换为128、192或256位密钥。我该怎么办?

    • 我使用mysql aes加密和解密如下: 我读到AES支持128 192和256。我假设默认值是128是正确的吗?因此,鉴于上述查询没有定义密钥长度,它会以默认密钥长度加密和解密吗? 如果是这样,在上面的查询中指定密钥长度会更好吗?因为例如:假设我使用默认值128加密和存储数据,但后来设置更改,256变为默认值,那么这意味着它将无法解密数据,对吗?有没有办法在上面的查询中定义密钥长度? 另外,我用

    • 问题内容: 此代码给出了无效的AES密钥长度错误。我该如何纠正?(我想要128位密钥AES加密) 任何帮助表示赞赏 问题答案: 使用a 从密码派生密钥字节。您可以在此处查看详细示例。请注意,您需要指定128位密钥的密钥长度,而不是该示例中所示的256位。 您将遇到的下一个问题是您没有指定填充方案。除非您的消息是16字节(AES块大小)的倍数,否则将引发错误。如示例所示,使用PKCS5Padding

    • 我正在尝试使用加密技术加密文本。上次使用AES CTR时效果很好,但现在使用CBC或GCM时,我可以使用的最大密钥长度是32位?? 处理加密的代码: 运行此加密时会引发< code >异常: 请注意,使用Wiki中提供的示例时会发生同样的事情.zip(并将密钥长度更改为256或128) 知道为什么抛出吗?

    • 问题内容: 我正在编写一个用于传输文件的小型应用程序,或多或少地将其作为一种学习更多编程加密基础的方法。这个想法是生成一个RSA密钥对,交换公共密钥,并发送AES iv和密钥以进一步解密。我想用接收者的RSA公钥加密AES密钥,如下所示: 然后,我将密钥值写给接收器,并按如下方式解密: 在控制台的另一端,我将其作为输出: 此外,如果我创建一个大小为16的字节数组,并将cipher.doFinal(

    • 问题内容: 我正在研究 文本加密和解密 项目(遵循Struts 2) 每当我输入密码和纯文本时,都会收到“无效的AES密钥长度”错误。 服务等级 这是错误 问题答案: 一般须知: 键!=密码 需要键,而不是密码。见下文 这可能是由于策略限制导致无法使用32个字节的密钥。看到其他答案 就你而言 问题是数字1:您要传递密码而不是密钥。 AES仅支持16、24或32字节的密钥大小。您要么需要提供准确的金