|
分類:[C#]
済みません、おせわになります。
総合開発環境 Microsoft Visual Studio Community 2015 Version 14.0.24720.00 Update 1 Microsoft .NET Framework Version 4.6.01586
使用言語 Microsoft Visual C# 2015
やりたい事 フォームからパスワードと情報を入力 し暗号化ファイルに保存、復元表示する 簡単ソフトの作成(だいそれた事を…(^^;)
その、暗号化、複合の実験段階です。 エラー、例外等は発生しないのですが、複合が 出来ません(泣)
何か根本的な箇所で間違えている可能性が大な様な? System.Security.Cryptography.CryptoStreamの 動作が良く理解出来てないようです。 二日ほど考えているのですが(ググって^^;) 解りません。下記にソースを記載致します。 ご教授賜れば幸甚です。宜しくお願いいたします。
//********************************************************************* using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms;
namespace wamrecode20170205 { static partial class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Form1()); string psw = "大変大変大事大事手遅れ手遅れ散々あ"; string tfnm = @"d:\201702\twam.bin"; string[] str = new string[3]; str[0] = "あかさたなはまやらわ"; str[1] = "abcdefghijklmnopqrstuvwxyz0099"; str[2] = "ホゲ兵庫東京北海道ササニシキ"; // string[] result = new string[] { "" }; wamenc(str, tfnm, psw); result= wamdec(tfnm, psw); for (int i = 0; i< result.Length; i++) { MessageBox.Show("result = " + result[i]); } } //******************************************************************************* private static void wamenc(string[] cip_data, string enc_fnm, string wam_psw) { using (System.Security.Cryptography.AesCryptoServiceProvider aes = new System.Security.Cryptography.AesCryptoServiceProvider()) { aes.KeySize = 256; aes.BlockSize = 128; aes.Mode = System.Security.Cryptography.CipherMode.CBC; aes.Padding = System.Security.Cryptography.PaddingMode.PKCS7; aes.GenerateIV(); byte[] Biv = aes.IV; byte[] Bpsw = System.Text.Encoding.GetEncoding(932).GetBytes(wam_psw); byte[] Bkey = new byte[32]; for (int i = 0; i < 32; i++) { if (i < Bpsw.Length) { Bkey[i] = Bpsw[i]; } else { Bkey[i] = 0; } } MessageBox.Show("dec key= " + System.Text.Encoding.GetEncoding(932).GetString(Bkey)); aes.Key = Bkey; using (System.Security.Cryptography.ICryptoTransform wamenc = aes.CreateEncryptor()) { using (System.IO.FileStream fp = new System.IO.FileStream(enc_fnm, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None)) { MessageBox.Show("iv enc = " + System.Text.Encoding.GetEncoding(932).GetString(Biv)); fp.Write(Biv, 0, 16); using (System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream( fp, wamenc, System.Security.Cryptography.CryptoStreamMode.Write)) { for (int i = 0; i < cip_data.Length; i++) { byte[] strbuff = System.Text.Encoding.GetEncoding(932).GetBytes(cip_data[i]); cs.Write(strbuff, 0, cip_data[i].Length); } } } } } } //******************************************************************************* private static string[] wamdec(string argfnm, string argpsw) { using (System.Security.Cryptography.AesCryptoServiceProvider aes = new System.Security.Cryptography.AesCryptoServiceProvider()) { aes.KeySize = 256; aes.BlockSize = 128; aes.Mode = System.Security.Cryptography.CipherMode.CBC; aes.Padding = System.Security.Cryptography.PaddingMode.PKCS7; byte[] Bpsw = System.Text.Encoding.GetEncoding(932).GetBytes(argpsw); byte[] Bkey = new byte[32]; byte[] Biv = new byte[16]; for (int i = 0; i < 32; i++) { if (i < Bpsw.Length) { Bkey[i] = Bpsw[i]; } else { Bkey[i] = 0; } }
aes.Key = Bkey; MessageBox.Show("dec key= " + System.Text.Encoding.GetEncoding(932).GetString(Bkey)); using (System.IO.FileStream fs = new System.IO.FileStream(argfnm, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.None)) { fs.Read(Biv, 0, 16); aes.IV = Biv; MessageBox.Show("iv dec= " + System.Text.Encoding.GetEncoding(932).GetString(Biv)); using (System.Security.Cryptography.ICryptoTransform mycip = aes.CreateDecryptor())
{ using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { using (System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream( ms, mycip, System.Security.Cryptography.CryptoStreamMode.Write)) { byte[] gettx = new byte[1024]; string[] pltx =new string[]{ ""}; int p = 0; for (;;) { int fsize = fs.Read(gettx, 0, gettx.Length); MessageBox.Show(fsize.ToString()); cs.Write(gettx, 0, fsize); pltx[p] = System.Text.Encoding.GetEncoding(932).GetString(gettx); p++; if (fsize == 0) p = 0; break; } return pltx; } } } } } } } } //*************************************** 以上です m(__)m
|