如果我将更长的密钥发送到mysql AES_ENCRYPT而不是允许,会发生什么

时间:2017-10-18 14:09:56

标签: mysql encryption aes

在mysql 5.7.10中我使用AES_Encrypt和cbc 256位模式,所以我必须使用32字节密钥。但是我使用更长的密钥,结果是不同的,那么MYSQL如何考虑更长的密钥呢?

因为我想使用64字节(512位)密钥,这种"工作"在MYSQL中,但使用Chilkasoft crypt2library的64字节密钥不起作用,我的意思是结果与MySQL不一样。

任何想法,我可以使用比32字节更长的密钥(我使用SHA512生成密钥,这就是为什么我有64字节密钥)。

1 个答案:

答案 0 :(得分:0)

bzero((char*) rkey,AES_KEY_LENGTH/8);
for (ptr= rkey, sptr= key; sptr < key_end; ptr++,sptr++)
{
    if (ptr == rkey_end)
    ptr= rkey;  /*  Just loop over tmp_key until we used all key */
    *ptr^= (uint8) *sptr;
}

我找到了答案here。基本上它创建了一个零的数组并且预先设置了密钥并且只是它的xors。无论密钥有多长,数组总是32/16字节。