Tink API 会将任意二进制 blob 作为输入。这意味着,如果要加密结构化数据(如协议缓冲区),需要先对数据进行编码。
加密 protobuf
如需加密,请执行以下操作:
- 将 protobuf 序列化为字节数组。
- 对序列化字节进行加密,然后存储或发送生成的密文。 使用:
要解密,请执行以下操作:
- 对密文进行解密。
- 如果第 1 步成功,则对 protobuf 进行反序列化。
保护 protobuf 免遭篡改
在大多数情况下,对 protobuf 进行加密比只加密要好。
如需保护 protobuf 免遭篡改,请采取以下措施:
如需进行验证,请执行以下操作:
- 获取序列化 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
最后,对生成的字节数组进行加密(或身份验证)。