- - PR -
暗号化された文字列をSHIFT-JISのファイルに貼り付ける
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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-06-07 22:47
暗号された結果はUnicodeでも何でもなく、単なるバイト列です。
base64などでASCII化して挿入すればよろしいかと。 |
|
投稿日時: 2005-06-07 23:32
スフレさん、アドバイスありがとうございます。
System.Convert.ToBase64String(byte配列) にて、無事変換できました。 逆は System.Convert.FromBase64String(string) ですね。 勉強不足でお恥ずかしいです。 でもとても助かりました。ありがとうございました! |
1