什么是尺寸最好的对称.net加密提供商?

时间:2011-01-21 23:33:34

标签: c# serialization encryption

我有一个场景,我需要将结构序列化为字节数组或字符串,加密它然后将其存储在SQL表中。

问题是这个表可能会遇到数百万行,所以大小都很重要。

我一直在使用BinaryFormatter序列化为byte [],将其转换为Ascii,然后使用RijndaelManaged提供程序对其进行压缩。

在加密之前,字符串大约是230个字节。加密后,它超过600字节。

是否有人知道其他加密提供商是否会更好地做到这一点?或者,如果确实有更好的方法我应该这样做?

非常感谢,

ž

2 个答案:

答案 0 :(得分:1)

通常,加密算法仅增加固定开销(对于IV,在非对称加密算法的情况下,加密对称密钥)。如果您看到大小增加2倍,则表示您在加密之前或之后正在执行某些操作,这会增加数据的大小。

我会删除ascii转换 - 加密算法在原始二进制数据上工作正常 - 并确保您作为原始二进制blob存储到数据库中,而不是base64-ing或类似。如果您仍然遇到问题,请发布您正在使用的代码。

答案 1 :(得分:1)

我发现了这个问题。

我做了一些事情 1 /停止使用.net序列化。我注意到序列化内容包括每个对象的汇编信息(例如文化,版本等)。它甚至会在您覆盖ISerializable并“滚动自己的”时执行此操作。我可以看到它为什么需要重新序列化...但我不想将它存储在每一行中。相反,我刚刚构建了一个分隔的字符串并将其转换为字节数组。我正在自我序列化。

2 /我在加密之前停止尝试将byte []转换为字符串(使用某种编码)。我现在只是将byte []传递给rijindal。

3 /我已经开始在表中使用varbinary并将加密结果写为原始字节。这似乎比尝试使用某种编码更有效。

所以 - 尽管如此,我已经将最终的加密产品减少到大约150个字节。大改进! ...而且,我还没有尝试压缩它。

感谢大家的帮助: - )

ž