我使用mysql aes进行加密和解密,如下所示:
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位?
发布于 2017-11-19 19:06:09
所有这些问题的答案都在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. https://stackoverflow.com/questions/47375662
复制相似问题