- ベストアンサー
Visual Basicでの暗号複合について
- Visual Basicでの暗号複合についての方法を調べましたが、日本語文字のテキストでは複合に失敗してしまうようです。
- Windows XP pro Sp3 32bit、Visual Basic 2010 Express の環境で、暗号の複合を行うプログラムを作成しましたが、日本語文字に対応できませんでした。
- 問題の原因と解決策について詳しく調査していますが、まだ解決方法が見つかっていません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MSDNのサンプルはマルチバイトを考慮してませんね^^; test.txt ↑このファイルを「SHIFT-JIS」ではなくUTF8として保存してあげると、全角でも複合化されると思います。 ↓参考URL http://dobon.net/vb/dotnet/string/encryptstring.html
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
おまけで、、、 複合化部分はかってにSJISで出力されるのが気持ち悪ければ、出力部分を変更してあげるとよいです。 Sub DecryptFile(ByVal sInputFilename As String, _ ByVal sOutputFilename As String, _ ByVal sKey As String) Dim DES As New DESCryptoServiceProvider() 'このプロバイダには 64 ビット キーと IV が必要です。 'DES アルゴリズム用の秘密キーを設定します。 DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey) '初期化ベクタを設定します。 DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) '暗号化されたファイルを読み込むためのファイル ストリームを作成します。 Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read) 'DES のインスタンスから DES Decryptor を作成します。 Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor() '受け取ったバイトに対して読み取りと DES 復号化変換を行うように設定された CryptoStream を作成します。 Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read) ''復号化されたファイルの内容を出力します。 Dim s As String = New StreamReader(cryptostreamDecr).ReadToEnd fsread.Close() Dim sw As New System.IO.StreamWriter(sOutputFilename, False, System.Text.Encoding.UTF8) 'TextBox1.Textの内容を書き込む sw.Write(s) '閉じる sw.Close() End Sub どうしても読み込みファイルをSJISで行いたいのであれば、読み込み部分の改造が必要です。 ↓これらが参考になります。 http://dobon.net/vb/dotnet/file/readfile.html http://dobon.net/vb/dotnet/file/writefile.html http://dobon.net/vb/dotnet/file/filestream.html
お礼
1050YEN さん 補足のコメントをいただき、ありがとうございます。 教えていただいたコードで振る舞いを確認してみます。 出力前がUTF-8で、後がS-JISのままだと、確かにあまり行儀良くない状態ですよね。。。 1050YEN さんのコードを反映させていただこうと思います。 URLの件は、後学のため、熟読させていただきます。 勉強させていただき、幸甚ですヾ(〃^∇^)ノ
お礼
1050YEN さん ありがとうございます。 テキストファイル"C:\temp\test.txt"をUTF-8 で保存し直しましたところ、無事、日本語文字 も暗号/複合、正常動作しました。 即の回答で解決していただき、深く感謝申し上げます(o*。_。)o