2012-09-03 71 views
2

我正在将加密数据保存到数据库。为加密数据创建订单列

有没有一种方法可以创建一个“散列码”或纯文本数据的指纹或校验和,如果我按“散列码”排序/排序,那么顺序就好像我已经保存了纯文本一样文本数据并通过对它执行相同的排序/排序?

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

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

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

+0

您需要保留加密,这大大削弱了加密的强度。 – CodesInChaos

回答

2

加密有意破坏明文中任何明显的结构,所以任何排序结构也将被破坏。考虑到未加密记录的已知结构,使用非密码哈希码将导致潜在的安全泄漏。

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

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