首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用默认密钥长度的MySQL AES加密

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

Stack Overflow用户
提问于 2017-11-19 18:05:23
回答 1查看 579关注 0票数 0

我使用mysql aes进行加密和解密,如下所示:

代码语言:javascript
复制
AES_ENCRYPT('text to encrypt','key')
CAST(AES_DECRYPT(field_name, 'key') AS CHAR (50))

我读到过AES支持128、192和256。除非另有更改,否则我假设默认值是128,对吗?因此,由于上面的查询没有定义密钥长度,它会使用默认的密钥长度进行加密和解密吗?

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

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-19 19:06:09

所有这些问题的答案都在aes_encrypt()上的mysql手册中。

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

代码语言:javascript
复制
By default these functions implement AES with a 128-bit key length. 

因此,由于上面的查询没有定义密钥长度,它是否会以默认的密钥长度进行加密和解密?

代码语言:javascript
复制
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位?

代码语言:javascript
复制
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. 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47375662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档