@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

暗号化された文字列をSHIFT-JISのファイルに貼り付ける

1
投稿者投稿内容
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-07 22:44
いつも参考にさせていただいております。

設定ファイル(Shift-JIS)に記述されているパスワード文字列の部分のみを
暗号化したいのですが、うまくいかず悩んでおります。

よく紹介されているTripleDESCryptoServiceProviderを使用して、
暗号化された文字列を単純にShift-JISファイルに貼り付けると、
当然ですが暗号化されたパスワードはUnicodeのため、文字コードが不正になり、
正しく複合化がされなくなってしまいます。
以下が暗号化のソースコードです。

-------------------------------------------
// パスワード文字列を byte 配列に変換します
byte[] source = Encoding.Unicode.GetBytes(password);
// Triple DES のサービス プロバイダを生成します
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
// 入出力用のストリームを生成します
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor( DesKey, DesIV ),
CryptoStreamMode.Write);
// ストリームに暗号化するデータを書き込みます
cs.Write(source, 0, source.Length);
cs.Close();

// 暗号化されたデータを byte 配列で取得します
byte[] destination = ms.ToArray();
ms.Close();

// byte 配列を文字列に変換して表示します
textBox2.Text = Encoding.Unicode.GetString(destination);
------------------------------------------------------------
textBox2.Textで表示された暗号をファイルに貼り付けてみました。

どこかでさらにエンコーディングが必要なのでしょうか?



スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2005-06-07 22:47
暗号された結果はUnicodeでも何でもなく、単なるバイト列です。
base64などでASCII化して挿入すればよろしいかと。
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-07 23:32
スフレさん、アドバイスありがとうございます。

System.Convert.ToBase64String(byte配列)
にて、無事変換できました。

逆は
System.Convert.FromBase64String(string)
ですね。

勉強不足でお恥ずかしいです。
でもとても助かりました。ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)