-1

これはいかなる種類のハッキングも対象としていません。私は.NETでトリプルDES暗号化技術を試してみています。私はいくつかのテストデータを持っています。与えられたデータで結果を取得する必要があります。結果もあります。しかし、値が一致することはありません。私はコードがうまくいくと確信しています(以下にそれを与えるでしょう)。だから私は唯一の可能性はキーが間違っている可能性があると思ったので、キーを見つけてそれが一致するかどうかを見てみましょう。以下は私のコードです:

byte[] key = StringToByteArray("5b70649d4ae0bf2af891c167514aa7515b70649d4ae0bf2a");
byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
byte[] bytes = Encoding.ASCII.GetBytes("95e4d77c6d6c6c993333303533303833");
TripleDESCryptoServiceProvider tripleDes = new TripleDESCryptoServiceProvider();
tripleDes.Mode = CipherMode.CBC;
//tripleDes.Padding = PaddingMode.None;
tripleDes.Key = key;
tripleDes.IV = iv;
MemoryStream ms = new MemoryStream();
ICryptoTransform encryptor = tripleDes.CreateEncryptor();

CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);
cs.Write(bytes, 0, bytes.Length);
cs.FlushFinalBlock();
byte[] cipher = ms.ToArray();
string finalValue = ByteToString(cipher, 16); //ByteToString method will convert byte array to string.

最終結果は1B529558534F43D15556AD65C7E396D5674EE8A09E0A29A84389020EF820AC51B7D5E1B33BDA18A2です。必要なのは16バイトだけなので、最初の16バイトだけを16進数に変換しまし1B529558534F43D15556AD65C7E396D5た。

しかし、期待される結果は76db821f5c7af12dc8d70a6a79cfcb77 次のとおりです。キーを見つけることができれば、キーにも何らかの処理が必要であることがわかる場合があります。

助けてくれてありがとう!

4

1 に答える 1

1

確かに可能ですが、TripleDESCryptoServiceProviderクラスは、暗号、IV、および暗号化されていないデータがある場合にキーを提供するために「逆」で機能するように設計されているとは思いません。なぜそれが必要ですか?

于 2011-10-10T07:38:48.030 に答える