3

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

有没有一种方法可以创建纯文本数据的“哈希码”或指纹或校验和,如果我按“哈希码”排序/排序,则顺序与保存纯文本数据并执行时相同同样的排序/顺序按操作就可以了?

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

我需要在应用程序中执行此操作,如果可能的话,最好不要在 SQL DB 中执行。

我正在使用实体框架和 SQL 2008 和 C# 4.0。

4

1 回答 1

3

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

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

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

于 2012-09-03T11:37:03.310 回答