在 SQL Server 中加密/在 .Net 4 中解密

2024-01-07

我知道这可能是这个问题的重复:如何在 sql server 中加密数据并在 .net 应用程序中解密 https://stackoverflow.com/questions/3202011/how-to-encrypt-data-in-sql-server-and-decrypt-it-in-net-apps- 但这是大约一年前提出的,我希望可能会有进展或其他什么。

不管怎样,我们有一个应用程序可以将文件从一个位置传输到另一个位置,显然 FTP 配置文件需要密码。我们有一个包含配置文件所有详细信息的数据库,但我们需要对密码进行加密。我们考虑过在 SQL 中解密它们,然后将它们发送到应用程序,但这意味着通过网络发送,这是我们不希望的。

我们想要加密存储的密码,将详细信息传递给应用程序,然后在应用程序中解密它们。

这可能吗?

从我的谷歌搜索来看,似乎并非如此,但我希望有人有窍门或其他什么。

提前致谢!

Note:我正在使用.Net 4 和 SQL Server 2008 R2。


使用 SQL Server 列加密 API 函数(例如EncryptByKey http://msdn.microsoft.com/en-us/library/ms174361.aspx)与任何客户端加密或解密不兼容,因为它使用内部的、未记录的存储格式。

我要指出的是,您对通过网络发送密码的担心是没有根据的,因为 SQL Server 提供网络连接机密性,请参阅加密与 SQL Server 的连接 http://msdn.microsoft.com/en-us/library/ms189067.aspx.

最好的选择是将密码存储在加密列中并使用内置的 SQL Server 加密函数(EncryptByKey http://msdn.microsoft.com/en-us/library/ms174361.aspx, DecryptbyKey http://msdn.microsoft.com/en-us/library/ms181860.aspx)或使用透明数据库加密 http://msdn.microsoft.com/en-us/library/bb934049.aspx。选择其中之一的标准主要是许可要求(TDE 需要企业版),因为 TDE 在各个方面都优于列级加密。无论您选择哪种解决方案,您都会很快意识到主要问题是密钥管理,为此 SQL Server 提供了一个可行的方案,请参阅加密层次结构 http://technet.microsoft.com/en-us/library/ms189586.aspx。无论您如何设计解决方案,应用程序都不需要自行加密或解密密码,如果您需要这样,那么您显然走上了一条错误的道路(因为应用程序本身无法管理密钥),因此永远不应该出现 CLR 加密和 SQL 加密兼容性问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL Server 中加密/在 .Net 4 中解密 的相关文章

  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 如何在bootstrap中设置datetimepicker的MinDate和maxDate属性

    我想在引导程序中为 datetimepicker 动态设置 minDate 和 maxDate 属性 请帮我解决这个问题 在这种情况下 在一个日期时间选择器中选择日期时 应将该选定日期设置为其他日期时间选择器的 minDate 在第二个日期
  • 分离的 pthread 和内存泄漏

    有人可以向我解释一下为什么这个简单的代码会泄漏内存吗 我相信 由于 pthread 是在分离状态下创建的 因此它们的资源应该在终止后立即释放 但事实并非如此 我的环境是Qt5 2 include
  • Visual Studio 2017 错误无法打开“X”进行写入 - 对路径的访问被拒绝

    抱歉 我似乎无法修复此错误 严重性代码 说明 项目文件行抑制状态 错误 CS2012 无法打开 C Users Usuario source repos WindowsFormsApp1 WindowsFormsApp1 obj Debug
  • docker本地注册表“exec:\”htpasswd \“:在$ PATH中找不到可执行文件”

    直到最近这还工作得很好 docker run entrypoint htpasswd registry 2 Bbn myuser mypwd gt my registry2 reg hub auth htpasswd 现在它出错了 dock
  • 从结果集中创建长字符串

    我在存储过程中的 MS SQL 中有一个结果集 假设它有一个 VARCHAR 列 但有许多行 我想创建一个包含所有这些值的逗号分隔字符串 有没有一种简单的方法可以做到这一点 或者我是否必须逐步遍历每个结果并手动构建字符串 最好我想在存储过程
  • 访问不同端口中的 spring security,以字符串“anonymousUser”形式获取主要数据

    我有一个应用程序在我的本地 8100 中运行 我的服务器端代码在它已实现的 8065 中执行Spring Security作为 Java 配置 当我从 8100 ionic 浏览器窗口输入登录服务器代码时 我得到的原则对象数据只有字符串作为
  • 您的 Ruby 版本是 2.3.0,但您的 Gemfile 指定为 2.1.2

    我正在尝试设置一个现有项目 跑步时bundle install 我收到以下错误 我已经尝试了许多可能的解决方案 但对我不起作用 我也运行了建议的命令 例如gem pristine bcrypt version 3 1 10但对我不起作用 b
  • sbt 任务类路径

    我正在处理 sbt 任务 我希望能够访问一些应用程序类和依赖项 具体来说 我想使用 scalaquery 生成数据库 DDL 有什么方法可以将这些依赖项添加到任务中 或者我可能需要为此创建一个插件 object ApplicationBui
  • 复制到本地主机后,Wordpress 总是重定向到 https

    当我将 WordPress 安装从服务器复制到本地网络服务器 MAMP 并尝试访问时localhost 8888 它总是将 http 重定向到 https 所以我总是得到一个ERR SSL PROTOCOL ERROR 我在任何地方都找不到
  • Ninject 在 appharbor 上启动应用程序时崩溃

    我在部署在 appharbor 上的 MVC 3 项目上使用 Ninject 我注意到应用程序启动时出现异常 看起来 Ninject 内部的某些内容是原因 但我找不到任何答案 所以请帮助我 将尝试在此处添加完整的异常 Server Erro
  • Openid 禁止错误

    在我能够正确安装它 打开 id 库 后 我在让它工作时遇到了一些问题 我正在使用打开 id 选择器 http jvance com pages JQueryOpenIDPlugin xhtml一个 jquery 插件 问题是 当我单击任何打
  • 升级到 ADT 20 后,键盘在 Intel x86 Android 模拟器上停止工作

    我的意思是我不能再从笔记本电脑键盘输入 Android 模拟器了 虚拟键盘和屏幕键盘工作正常 升级到工具版本 20 后 我遇到了同样的问题 我必须编辑 AVD 以添加一个选项 如下所示 从 Eclipse 转到 AVD 管理器 选择特定的
  • 通过索引变量访问 SML 元组

    问题很简单 如何在SML中使用索引变量访问元组 val index 5 val tuple1 1 2 3 4 5 6 7 8 9 10 val correctValue index tuple1 我希望有人能够提供帮助 提前致谢 不存在接受
  • 配置 Flask 开发服务器在网络上可见

    我不确定这是否是 Flask 特定的 但是当我在开发模式下运行应用程序时 http localhost 5000 我无法从网络上的其他机器访问它 使用http dev host ip 5000 例如 当 Rails 处于开发模式时 它可以正
  • 如何在 Android 上的片段中使用共享首选项?

    我有一个片段 我想将 Facebook ID 存储在共享首选项中 我无法在获取首选项函数中编写私有模式 我还想在另一个片段中访问这个共享首选项 我怎样才能这样做呢 这是我的代码 Session openActiveSession getAc
  • 使用键盘输入切换值以进行绘图

    我有矩阵中的数据集 我想在一组上绘图 然后使用键盘输入移动到另一组 这很可能是这样的 for t 1 N plot data t pause end 但我想及时向前和向后移动t 例如使用箭头 好的 可以这样做 direction input
  • 如果 Ubuntu 上安装了多个 Java 版本,如何检查 Oracle Java 版本

    我两者都有OpenJDK and 甲骨文Java安装在我的 Ubuntu 上 如果激活的java是OpenJDK 有没有办法在bash shell中检查Oracle java的版本 update java alternatives l将列出
  • 非管理员用户上的客户端无法使用 net.pipe 与服务进行通信

    我有一个使用 net pipe 协议托管 WCF 服务的客户端应用程序 客户端无法与在管理员用户下运行的其他 WCF 服务通信 我读到您无法在不同用户之间使用 net pipe 进行通信 有办法绕过它吗 我读到您无法在之间使用 net pi
  • NSURLConnection 进度条与 sendAsynchronousRequest Objective-C

    我正在使用以下方法下载一堆较大的 zip 文件 这可能需要一段时间 所以我想显示一个进度条 我研究了如何使用 NSURLConnection 的委托方法 它看起来很简单 但是我想通过 sendAsynchronousRequest 实现同样
  • 在 SQL Server 中加密/在 .Net 4 中解密

    我知道这可能是这个问题的重复 如何在 sql server 中加密数据并在 net 应用程序中解密 https stackoverflow com questions 3202011 how to encrypt data in sql s