本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Clean Rooms 加密计算中的列类型
本主题提供有关 Clean Rooms 加密计算中列类型的信息。
Fingerprint 列
Fingerprint 列是在 JOIN 语句中使用的受加密保护的列。
fingerprint 列中的数据无法解密。只有密封列中的数据才能解密。
Fingerprint 列只能在以下 SQL 子句和函数中使用:
-
JOIN (INNER, OUTER, LEFT, RIGHT, or FULL) 与其他 fingerprint 列对比:
-
如果将
allowJoinsOnColumnsWithDifferentNames
参数的值设置为false
,则 JOIN 的两个 fingerprint 列的名称也必须相同。
-
-
SELECT COUNT()
-
SELECT COUNT(DISTINCT )
-
GROUP BY
(仅当协作将preserveNulls
参数的值设置为true
时才使用。)
违反这些限制条件的查询可能会生成不正确的结果。
密封列
密封列 是 SELECT 语句中使用的通过加密保护的列。
密封列只能在以下 SQL 子句和函数中使用:
-
SELECT
-
SELECT ... AS
-
SELECT COUNT()
注意
不支持
SELECT COUNT(DISTINCT )
。
违反这些限制条件的查询可能会生成不正确的结果。
加密前为 sealed 列填充数据
当您指定列应该是 sealed 列时,C3R 会询问您要选择哪种填充。加密前填充数据是可选的。如果不使用填充(填充类型为 none
),则加密数据的长度表示 cleartext 的大小。在某些情况下,cleartext 的大小可能会暴露明文。如果使用填充(填充类型为 fixed
或 max
),则先将所有值填充到常见大小,然后再加密。使用填充时,加密数据的长度除了给出其大小的上限外,不提供有关原始 cleartext 长度的信息。
如果要为列填充并且已知该列中数据的最大字节长度,请使用 fixed
填充。使用至少与该列中最长值的字节长度一样大的 length
值。
注意
如果值长于提供的 length
值,则会发生错误并导致加密失败。
如果要为列填充,而该列中数据的最大字节长度尚不清楚,请使用max
填充。这种填充模式将所有数据填充到最长值的长度加上额外的 length
字节。
注意
您可能需要批量加密数据,或者定期使用新数据更新表。请注意,max
填充会将条目填充到给定批次中最长的明文条目的长度(加 length
字节)。这意味着加密文字长度可能因批次而异。因此,如果您知道列的最大字节长度,则应使用 fixed
而不是 max
。
Cleartext 列
Cleartext列是未受加密保护的列,无法在JOIN或SELECT语句中使用。
Cleartext 列可以用于 SQL 查询的任何部分。