2017-07-21 9 views
0

ユーザーを作成し、独自の暗号化方式を使用して暗号化されたパスワードをOracleデータベースに保存するvb6アプリケーションがあります。私たちは、その後に、ユーザーのログを検証するために、このテーブルを照会し、視覚的、基本的なWebサービスを持っている問題がで来ている場所ですOracleクエリーでvb.netで暗号化された列の値が正しく翻訳されない

たとえば:。。

  • パスワードはデータベースに保存されます[nμ} RR«RY KK]
  • としてvb.netアプリケーションは、このパスワードを照会し、それは次のように返された[nμ} R?R«?RY?KK]

私はそれを理解し、それはです使用しているOleDBConnectionのために、Oracleで使用されているキャラクタ・セットが正しく翻訳されていないためです。私の質問は、データベースから返された値がデータベース内の値と一致するように、この問題を回避する方法はありますか?

+0

どのOleDBプロバイダを使用しますか?マイクロソフトかオラクル? –

+0

データベースの文字セットとは何ですか? 「SELECT * FROM nls_database_parameters」WHEREパラメータ= 'NLS_CHARACTERSET';「 –

+0

@WernfriedDomscheit私たちはOracleプロバイダを使用します。これは接続文字列です。Provider = MSDAORA.1; Password = [Password];ユーザID = [User];データソース= [データベース] –

答えて

0

グーグルと多くの有用な答えの多くの後、私の問題は二つのことに関連していると判明:

  1. オラクルのバージョンのアプリケーションが使用するだけで、適切にオラクル8iのを使用してデータを復号化しませんでしたが最新のオラクル。これは、多くのクライアントが古い設定を使用しているという事実によって制限されています。 Oracle 8iクライアントで暗号化されたデータは、Oracle 10 Clientで正しく復号化されません。
  2. oracleのバージョンに加えて、クライアント・タイプ(32ビットと64ビット)は、解読の重要な要因でした。このシナリオでは、Wernfried Domscheitが提案したオラクル・プロバイダを使用して、正しくデータを復号化および暗号化するために、32ビット・クライアントが必要でした。

だから要するに、オラクル8iの32ビットおよび最新のOracle 64ビットで使用する文字セットで使用される文字セットは、このようなvb.netで「Chr関数」のような方法を使用して、ANSI文字に同じにはなりません。

関連する問題