为加密数据创建订单列

时间:2012-09-03 09:36:11

标签: c# sorting encryption sql-order-by

我正在将加密数据保存到数据库中。

有没有办法可以创建纯文本数据的“哈希码”或指纹或校验和,如果我按“哈希码”排序/排序,那么顺序就像我保存纯文本一样数据并通过操作执行相同的排序/顺序?

我基本上需要一个SOUNDEX()类型函数,它会给我一个维持纯文本数据顺序的值。然后,我会保存加密数据和“哈希码”,并在“哈希码”字段查询数据顺序时。

我需要在应用程序中执行此操作,并且最好不要在SQL DB中执行此操作。

我正在使用Entity Framework和SQL 2008以及C#4.0。

1 个答案:

答案 0 :(得分:2)

加密故意破坏明文中的任何明显结构,因此任何排序结构也将被破坏。鉴于未加密记录的已知结构,使用非加密哈希码将导致潜在的安全漏洞。

您可以轻松地从未加密的数据创建订单列并存储该订单列,但每次添加新记录时都需要解密全部或部分数据库。

您可以从每十个记录编号开始:10,20,30,...这将允许使用二进制搜索插入新记录。经常对整个数据库进行解密和重新编号,从而恢复记录之间的差距。不是一个理想的解决方案,但可能是一个。