保留类型信息的加密

时间:2020-07-31 18:14:03

标签: encryption

我们如何实现基于非对称密钥的加密,但保留类型信息,例如int到int,字符串到字符串以及datetime到datetime等。

在将数据发送到任何数据库之前,我需要在应用程序中使用它。在将对象发送到基于文档的DB之前,我想对对象的成员进行加密,并将加密后的值设置回对象的成员。

对象是静态类型的,这意味着要说一个c#或java类实例。所以场景是,我们不能将加密的值(本质上是一个字符串)分配给非字符串数据类型,并且我们不想创建实例的副本,该实例的副本将所有加密的值保存在相应的字符串成员中,这样我将丢失类型信息。

非常感谢您的帮助/建议。

1 个答案:

答案 0 :(得分:0)

在将对象发送到基于文档的数据库之前,我想对对象的成员进行加密,然后将加密后的值设置回对象的成员。

因此对类型和数据进行编码。这完全独立于加密。您想要对数据进行编码的任何方式都会出现此问题。加密时,将其编码为JSON的方式完全相同。

请务必注意,加密数据并不是“本质上是字符串”。加密的输出是一个随机的字节序列。

您在实践中如何实现此功能在很大程度上取决于您的用例和您的语言。不同的语言具有非常不同的类型。但是在每种语言中,都有某种方法可以将数据编码为序列化格式(JSON,Protobuf等)。那就是您要关注的事情。一旦能够与任何序列化格式进行转换,就可以对该格式进行加密。重要的是序列化,而不是加密。