在mysql 5.7.10中我使用AES_Encrypt和cbc 256位模式,所以我必须使用32字节密钥。但是我使用更长的密钥,结果是不同的,那么MYSQL如何考虑更长的密钥呢?
因为我想使用64字节(512位)密钥,这种"工作"在MYSQL中,但使用Chilkasoft crypt2library的64字节密钥不起作用,我的意思是结果与MySQL不一样。
任何想法,我可以使用比32字节更长的密钥(我使用SHA512生成密钥,这就是为什么我有64字节密钥)。
答案 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字节。