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

使用默认密钥长度的MySQL AES加密

景翰音
2023-03-14

我使用mysql aes加密和解密如下:

AES_ENCRYPT('text to encrypt','key')
CAST(AES_DECRYPT(field_name, 'key') AS CHAR (50))

我读到AES支持128 192和256。我假设默认值是128是正确的吗?因此,鉴于上述查询没有定义密钥长度,它会以默认密钥长度加密和解密吗?

如果是这样,在上面的查询中指定密钥长度会更好吗?因为例如:假设我使用默认值128加密和存储数据,但后来设置更改,256变为默认值,那么这意味着它将无法解密数据,对吗?有没有办法在上面的查询中定义密钥长度?

另外,我用于加密的通行密钥必须与密钥长度匹配吗?例如,如果我使用128位密钥长度,我的通行密钥是否需要小于或等于128位?

共有1个答案

萧安怡
2023-03-14

所有这些问题的答案都可以在 aes_encrypt() 上的 mysql 手册中找到:

除非另有更改,否则我假设默认值为 128 是否正确?

By default these functions implement AES with a 128-bit key length. 

因此,鉴于上述查询没有定义密钥长度,它会以默认密钥长度进行加密和解密吗?

The block_encryption_mode system variable controls the mode for block-based encryption algorithms.
Its default value is aes-128-ecb, which signifies encryption using a key length of 128 bits and ECB mode.
For a description of the permitted values of this variable, see Section 5.1.5, “Server System Variables”.

如果是这样,在上面的查询中指定密钥长度会更好吗?

没有键长参数。见上面的答案。

另外,我用于加密的通行密钥必须与密钥长度匹配吗?例如,如果我使用128位密钥长度,我的通行密钥是否需要小于或等于128位?

For a key length of 128 bits, the most secure way to pass a key to the key_str
argument is to create a truly random 128-bit value and pass it as a binary value. 
 类似资料:
  • 我创建了一个函数,它使用: 如果我试着运行这个,比如: 我得到这个错误: 如果我尝试改变: 到 我得到: 如何将此输入字符串最小值强制为8?

  • 我正在学习ssl通信的基础知识,尤其是AES加密。我读了OpenSSL代码,看到了一个名为< code>userkey的指针。 在文件"aes_core. c"中 > 从何而来?它是如何生成的? 我想知道不同版本AES的的实际大小。 256 位版本为 256 / 8 = 32,192 为 24,128 为 16?我有点迷茫。 如果长度是可变的,那么我应该如何为那些符合长度要求的输入创建一个安全的输

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

  • 考虑以下java代码: 此代码输出“”。所以是64字节,而SHA-256是32字节哈希。 我知道我指定了512位(64字节)作为密钥长度 然而,我希望生成的密钥(PBKDF2)将由SHA-256进行散列,这样无论我使用的密钥大小如何,输出都应始终为32字节。 我错过了什么(或者为什么我的期望是错误的)?

  • 问题内容: 我无法在上创建索引。 MySQL: 问题答案:

  • 问题内容: 我有一个主键为varchar(255)的表。在某些情况下,255个字符不够用。我尝试将字段更改为文本,但是出现以下错误: 我怎样才能解决这个问题? 编辑:我还应该指出,该表具有包含多个列的复合主键。 问题答案: 发生错误是因为MySQL只能索引BLOB或列的前N个字符。所以错误主要发生时,有一个领域/列类型或BLOB或那些属于或类型,如,,,,,和您尝试使一个主键或索引。无论长度是完整