2012-06-13 43 views
2

我们正在使用数据集作为我们的数据访问层。 目前有一些存储加密数据的列。强类型数据集:覆盖列get:set

使用CLR我能够创建一个SQL函数来解密select中的数据,但在讨论中我们已经确定这是一个安全风险。

什么,我希望做的是要么

  1. 覆盖了get/set数据表列的,这样当上得到它会未加密值 并返回一个可读的字符串,并在设置将加密数据。
  2. 或者对表格适配器进行一些操作,以便在选择/更新时可以像上面那样做。
+0

是有可能的,我可以处理的填充或上得到这样的方式在扩展表适配器?类似于http://forums.asp.net/t/1152173.aspx/1 – workabyte

回答

2

您可以尝试创建此任务的扩展方法:

namespace ExtensionMethods 
{ 
    public static class MyExtensions 
    { 
     public static void SetEncryptColumn(this DataSetType.DataTableRow row, string value) 
     { 
      row.Encrypt = EncryptValue(value); 
     } 

     public static string GetEncryptColumn(this DataSetType.DataTableRow row) 
     { 
      return DecryptValue(row.Encrypt); 
     } 
    } 
} 

http://msdn.microsoft.com/en-us/library/bb383977%28v=vs.90%29.aspx

+0

已经考虑到了这一点,真的在跳转会有一种方法来获得类似于{返回DecryptValue(值)} – workabyte

+0

我确实已经有了字符串的扩展方法,所以我可以说table.value.encrypt/decrypt()并获得回报。我试图做的事情的本质是将解密放在表格适配器上填充或从数据库获取数据。感谢回复! – workabyte

0

键入的DataTables是部分类。虽然您无法覆盖属性,但您可以在另一个文件中添加更多方法,这些文件将在set上加密并在get上解密,并将值存储在原始属性中。

+0

您可以提供的任何参考材料或示例? – workabyte

+0

已键入的数据集是部分类,但在生成的强类型行定义中看不到'partial'关键字。 – Artemix

+0

在Visual Studio 2012 pro .net 4.5数据集中,我确实看到类似于 的公共部分类xyzRow:global :: System.Data.DataRow { – gg89