私はyoutube.Itのビデオを見た後、C#でRijndaelを使って暗号化プログラムを作った。これはとても簡単です。Rijndael暗号化で16文字以上の単語を解読する方法
Interface picture 64ビットと128ビットのキーを入力できます。 192ビットのキーは使用できません(なぜ?)。
もし私が単語を暗号化してそれを解読しようとすると、それは文字の数が< = 16であることを解読するだけです。文字の数が16を超えると、 "Padding is無効であり、削除できません "。
128ビットのキーでも同じです。文字数が< = 32の単語のみが復号化されます。それ以外の場合は、同じエラーメッセージが表示されます。
ここで質問
Problem Summery picture のクリアな視界を取るために夏はここで暗号化
// need using System.Security.Cryptography;
// using System.IO;
public Form1()
{
InitializeComponent();
desObj = Rijndael.Create();
}
string cipherData;
byte[] chipherbytes;
byte[] plainbyte;
byte[] plainbyte2;
byte[] plainkey;
SymmetricAlgorithm desObj;
private void button2_Click(object sender, EventArgs e)
{
try
{
cipherData = textBox1.Text;
plainbyte = Encoding.ASCII.GetBytes(cipherData);
plainkey = Encoding.ASCII.GetBytes(textBox4.Text);
desObj.Key = plainkey;
//choose any method
desObj.Mode = CipherMode.CBC;
desObj.Padding = PaddingMode.PKCS7;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desObj.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(plainbyte, 0, plainbyte.Length);
cs.Close();
chipherbytes = ms.ToArray();
ms.Close();
textBox2.Text = Encoding.ASCII.GetString(chipherbytes);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
とdecyptionコードのコードが
private void button3_Click(object sender, EventArgs e)
{
try
{
MemoryStream ms1 = new MemoryStream(chipherbytes);
CryptoStream cs1 = new CryptoStream(ms1, desObj.CreateDecryptor(), CryptoStreamMode.Read);
cs1.Read(chipherbytes, 0, chipherbytes.Length);
plainbyte2 = ms1.ToArray();
cs1.Close();
ms1.Close();
textBox3.Text = Encoding.ASCII.GetString(plainbyte2);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
エラーが発生した箇所を修正することはできますか?それは大きな助けになるでしょう! –
なぜですか? 'Convert.ToBase64String'と' Convert.FromBase64String'を使うのに問題がありますか?それはあまりにも多くの作業になるので、私は他の問題であなたを助けることはできません。これらの問題をすべて解決して安全な、[RNCryptor](https://github.com/RNCryptor/RNCryptor-cs)を使ってみませんか? –
私はyoutubeからこれをコピーしました!私はまだ暗号については全く知らない。それが理由です。しかし私は私のプロジェクトの一つのために正しく動作するためにこのコードを必要とします! :) –