【发布时间】:2015-05-15 09:44:51
【问题描述】:
我有一个相当简单的 SQL Server 要求,我有一个 int 类型的列,并且我想加密该列,因为用于加密该列的函数每次调用时都应该生成相同的值.
上下文
- 我的系统有 2 个用户角色源角色、目标角色
- 源角色用户生成具有以下结构的表 ID => 整数 元数据列 => varchar
- 我的系统将生成带有混淆 ID 的源表的副本
- Target 角色用户将有权访问生成的表并可以添加/更新元数据列,但他们不应该知道明确的 ID
我的试炼
- 我已经尝试
ENCRYPTBYKEY使用身份验证器和不使用身份验证器,但是每次我调用该函数时,它都会生成不同的值,这在某些情况下可能是有益的,但我的不是其中之一 :) - 我也尝试过使用
ENCRYPTBYASYMKEY并且出现了相同的行为,每次调用的输出不同 - 我还发现这个forum post 提到 SQL Server 正在使用随机初始化向量
我的问题是,考虑到该函数将用于加密具有数百万条记录的表,有哪些可能的解决方案可以满足我的要求。
【问题讨论】:
-
您的真正要求是什么?为什么相同的值?您是否将加密与散列混淆? 不使用加盐的对称加密被认为是不安全并且根据定义被破坏。原因非常简单——有人可以创建加密字符串的映射并通过简单的查找恢复原始数据。 为什么当你可以简单地使用原始密钥解密时你想要相同的加密?
标签: c# asp.net .net sql-server encryption