C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

aes 暗号化ファイルを複合出来ません。

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■83080 / inTopicNo.1)  aes 暗号化ファイルを複合出来ません。
  
□投稿者/ 老人v28 (5回)-(2017/03/04(Sat) 08:41:08)

分類:[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


引用返信 編集キー/
■83083 / inTopicNo.2)  Re[1]: aes 暗号化ファイルを複合出来ません。
□投稿者/ 老人v28 (6回)-(2017/03/04(Sat) 18:43:59)
No83080 (老人v28 さん) に返信

皆様

お騒がせして、済みません。
老人v28です。

考えたらメモリーに書き込んだデータ(複合)を
読み込んでいませんでした。
新たにバイナリFileの読書方法で問題が
ありましたが、勉強致します。
またお尋ねするかもしれませんが、
複合に関しては、最後で

return ms.ToArray();

挿入で解決いたしましたので。本当にすみませんでした。
有難うございます
m(__)m

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ