2

これについていくつかの記事を読みましたが、ここでは考慮していない変数があると思います。

トリプルデス暗号化を実装している他の誰かのコードを調べています。キーと iv が文字列としてどこかに保存されていません。バイト配列としてのみ。

これと同じ暗号化/復号化呼び出しを C# の外で行う必要があるため、使用されているキーを見つけようとしています。

私が試したこと:

byte[] key; // this is set
byte[] iv; // this is set

Convert.ToBase64String(key);
Encoding.Default.GetString(key);
Encoding.ASCII.GetString(key);
Encoding.UTF8.GetString(key);

これらのいずれかの結果は正しいかもしれませんが、それをエンコードするために別の変換を行う必要がありますか?

問題がある場合は、これらのキーを ruby​​ または node.js を介して openssl で使用しようとしています。

価値があるので、ルビーでバイトの配列を作成してパックを実行しようとしましたが、それでも間違った結果のようです。

4

2 に答える 2

0

さらに、Ruby コードで .NET 暗号化ルーチンを再現する必要がありました。頭を壁にぶつけて数時間後、これが私が考え出したことです. Base64 のことは忘れて、C# 部分に次のコードを使用します。

BitConverter.ToString(key).Replace("-", "")

結果を保存します。Ruby で次の関数を定義します。

def self.hex_to_bin(s) 
  s.scan(/../).map { |x| x.hex.chr }.join
end

C# 部分からの出力で呼び出すと、16 進文字列がビン文字列に変換されます。私にとっての解決策は、Ruby 側でこの変換を行うことでした。ivとキーの両方で機能します。

于 2013-08-29T23:54:00.587 に答える