ちょっとそこに、私は保存しているプロシージャを使用して保存して取得しているmsSQLデータベースです。私は配置される前にC#のWindowsフォームのいくつかのデータを暗号化しようとしているし、私はそれを元に戻すときにそれを解読します。すべての暗号化がC#側で処理されています。私はmicrosoft's tripleDESCryptoService Class(メモリのバージョン、2番目の例)から暗号化と解読のためのサンプルコードをそのまま使用しています。値は暗号化されてデータベースに送られますが、取得すると「不良データ」というエラーが発生します。 暗号化コールのサンプルです...c#tripleDESCrypto保存されたSQLから取得
TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
byte[] tempByte = new byte[100];
tempByte = encrypt(txt_Last_Name.Text, tDESalg.Key, tDESalg.IV);
txt_Last_Name.Text = System.Text.ASCIIEncoding.ASCII.GetString(tempByte);
txt_Last_Nameは、データベースに送信され、私は、データベース内の何かがあることがわかります。 、「csDecrypt.Read(fromEncrypt、0:データベースで、最後の名前がで... varchar型(20)復号コールの
サンプルがあるの復号化機能で
TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
string lastName = dr.GetString(dr.GetOrdinal("Last Name"));
if (isEncrypted)
{
byte[] toDecrypt = new ASCIIEncoding().GetBytes(lastName);
lastName = decrypt(toDecrypt, tDESalg.Key, tDESalg.IV);
}
txt_Last_Name.Text = lastName;
それ爆弾ですfromEncrypt.Length); "なぜ私は理解していません。私はそれがデータベースに正しく格納されていないか、私の変換が正しくないかどうかはわかりません。
解読関数に入る「データ」はサイズ16でゼロ以外の値を含みますが、「byte [] fromEncrypt」はすべてのゼロを含むサイズ16の配列です。
ありがとうございました!
tempByteをUnicode文字列として処理することはできません。文字列ではありません。 – pascal
TripleDESは弱いとみなされます。代わりにAESの使用を検討する必要があります:)。 – ykatchou