Tink API 将任意二进制 blob 作为输入。这意味着,如果您希望 对结构化数据(如 协议缓冲区,您需要 先对数据进行编码。
加密 protobuf
加密方法如下:
- 将 protobuf 序列化为字节数组。
- 加密序列化字节,然后存储或发送生成的密文。 请使用: <ph type="x-smartling-placeholder">
如需解密,请执行以下操作:
- 解密密文。
- 如果第 1 步成功完成,则对 protobuf 进行反序列化。
保护 protobuf 免遭篡改
在大多数情况下,加密 protobuf 比单独进行身份验证要好。
如需防止 protobuf 被篡改,请执行以下操作:
- 将 protobuf 序列化为字节数组。
- 对序列化字节进行签名或身份验证。请使用: <ph type="x-smartling-placeholder">
- 将序列化字节与签名(或 MAC)一起存储。
如需进行验证,请执行以下操作:
- 获取序列化 protobuf 及其签名(或 MAC)。
- 验证签名(或 MAC)。
- 反序列化 protobuf。
请注意,有效的签名或 MAC 并不能保证数据正确无误 格式。解析数据的实现应始终预期 可能已损坏。
保护多个数据项
如需保护多个数据项,请使用序列化方法。添加所有数据 传输至 protobuf,并按照上述方法对其进行加密(或身份验证)。
您还可以按如下方式进行序列化:
serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN
最后,对生成的字节数组进行加密(或身份验证)。