Oracle查询在vb.net中错误地转换加密列值

时间:2017-07-21 12:34:31

标签: vb.net oracle encryption vb6 oledb

我们有一个vb6应用程序,它使用我们自己的加密方法创建用户并将加密的密码保存到我们的oracle数据库中。然后,我们有一个可视化的基本Web服务,用于查询此表以验证用户的登录信息。这就是问题所在。

例如:

  • a密码以[nμ} r r ry kk]
  • 的形式保存在数据库中
  • 然后vb.net应用程序查询此密码,并以[nμ} r?r«?ry?kk]
  • 的形式返回

据我所知,这是因为我们使用的OleDBConnection错误地翻译了Oracle中使用的字符集。我的问题是,有没有办法解决这个问题,以便从数据库返回的值与数据库中的值匹配?

1 个答案:

答案 0 :(得分:0)

经过大量的谷歌搜索和许多有用的答案,我的问题结果与两件事有关:

  1. 应用程序使用的oracle版本只能使用oracle 8i而不是最新的oracle正确解密数据。这是由许多客户仍使用旧设置这一事实所造成的限制。使用oracle 10客户端加密的数据无法使用oracle 10客户端正确解密。
  2. 与oracle的版本一起,客户端类型--32位与64位 - 是解密的重要区别因素。对于这种情况,我需要32位客户端才能使用Wernfried Domscheit建议的oracle提供程序,它将按预期正确解密和加密数据。
  3. 简而言之,oracle 8i 32位使用的字符集和最新的oracle 64位使用的字符集对于使用诸如" Chr"等方法的ansi字符将是不同的。在vb.net中。