LENGTH 函数提供了直接地计算加密的数据的存储需求的便捷方式:
EXECUTE FUNCTION LENGTH(ENCRYPT_TDES("1234567890123456", "simple password"));这返回 55。
EXECUTE FUNCTION LENGTH(ENCRYPT_TDES("1234567890123456", "simple password", "12345678901234567890123456789012"));这返回 107。
EXECUTE FUNCTION LENGTH(ENCRYPT_AES("1234567890123456", "simple password"));这返回 67。
EXECUTE FUNCTION LENGTH(ENCRYPT_AES("1234567890123456", "simple password", "12345678901234567890123456789012"));这返回 119。
加密后的大小 = (4 x ((8 x((N + 8)/8) + 10)/3) + 11)
加密后的大小 = (4 x ((16 x((N + 16)/16) + 10)/3) + 11)
加密后的大小 = (4 x ((8 x((N + 8)/8) + 50)/3) + 11)
加密后的大小 = (4 x ((16 x((N + 16)/16) + 50)/3) + 11)
N | 不带提示的 ENCRYPT_TDES | 不带提示的 ENCRYPT_AES | 带有提示的 ENCRYPT_TDES | 带有提示的 ENCRYPT_AES |
---|---|---|---|---|
1 至 7 | 35 | 43 | 87 | 99 |
8 至 15 | 43 | 43 | 99 | 99 |
16 至 23 | 55 | 67 | 107 | 119 |
24 至 31 | 67 | 67 | 119 | 119 |
32 至 39 | 75 | 87 | 131 | 139 |
40 至 47 | 87 | 87 | 139 | 139 |
100 | 163 | 171 | 215 | 227 |
200 | 299 | 299 | 355 | 355 |
500 | 695 | 707 | 747 | 759 |
如果列大小小于由加密函数返回的数据大小,则当插入加密后的值时,会截断它。在此情况下,不可能加密数据,因为头部会提示该长度应长于该列包含的数据值。
然而,这些公式以及由 LENGTH 函数返回的值表明在下一示例中的表模式可存储 16 位信用卡号的加密的形式(带有提示)。