Always Encrypted(AE)列的大小有限制,主要取决于使用的加密算法和加密密钥长度。
默认情况下,使用AE时,SQL Server使用AES-256加密算法。AES-256算法要求输入为16字节的倍数,因此明文列的大小必须是16字节的倍数。
以下是使用AE加密和解密列的示例代码:
创建一个表来存储加密的数据:
CREATE TABLE Customers (
ID INT PRIMARY KEY,
Name NVARCHAR(100) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (
ENCRYPTION_TYPE = DETERMINISTIC,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256',
COLUMN_ENCRYPTION_KEY = AE_Column_Encryption_Key
)
);
插入加密的数据:
INSERT INTO Customers (ID, Name)
VALUES (1, ENCRYPTBYKEY(KEY_GUID('AE_Column_Encryption_Key'), N'John Doe'));
查询和解密数据:
SELECT ID, CONVERT(NVARCHAR(100), DECRYPTBYKEYAUTOASYMKEY(ASYMKEY_ID('AE_Column_Encryption_Key'), NULL, Name)) AS Name
FROM Customers;
在这个示例中,Name列被加密,并使用AE_Column_Encryption_Key进行加密和解密。请注意,Name列的大小必须是16字节的倍数。
希望这个示例能够帮助你理解Always Encrypted列的大小限制。
上一篇:Always Encrypted, LINQ和Where Contains
下一篇:Alwaysbeinginitialisedto0,eventhoughit'ssupposedtoberandom