参考 C#を攻略しよう様 http://www.kisoplus.com/sample2/key.htmll 暗号化 2012/06/07記事作成、引用
鍵を使って文字を暗号化する
鍵がわからないと復号化できない
using System; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //暗号化ボタン private void button1_Click(object sender, EventArgs e) { textBox3.Text = Encryption(textBox2.Text, textBox1.Text); } /// <summary> /// 暗号化 /// </summary> /// <param name="byt">暗号化する文字</param> /// <param name="kye">鍵</param> /// <returns>暗号化した文字</returns> private string Encryption(string byt, string kye) { // 文字をbyteに変換 byte[] _byt = Encoding.ASCII.GetBytes(byt); byte[] _key = Encoding.ASCII.GetBytes(kye); int j = 0; string str = ""; //_bytの要素分繰り返す for (int i = 0; i < _byt.Length; i++) { //_keyが_bytより要素数が少ないときのため if (j < _key.Length) { j++; } else { j = 1; } //xorで暗号化 _byt[i] = (byte)(_byt[i] ^ _key[j - 1]); //3ケタにして追加していく str += string.Format("{0:000}", _byt[i]); } return str; } //復号化ボタン private void button2_Click(object sender, EventArgs e) { textBox6.Text = Decryption(textBox5.Text, textBox4.Text); } /// <summary> /// 復号化 /// </summary> /// <param name="byt">復号化する文字</param> /// <param name="key">鍵</param> /// <returns>復号化された文字</returns> private string Decryption(string byt, string key) { // 文字をbyteに変換 byte[] _key = Encoding.ASCII.GetBytes(key); //3ケタで区切ったので文字数の1/3のbyte配列を用意する byte[] _byt = new byte[byt.Length / 3]; //文字数の1/3回繰り返す for (int a = 0; a < byt.Length / 3; a++) { //3ケタづつbyte変換して格納する _byt[a] = byte.Parse(byt.Substring(a * 3, 3)); } int j = 0; //_bytの要素分繰り返す for (int i = 0; i < _byt.Length; i++) { //_keyが_bytより要素数が少ないときのため if (j < _key.Length) { j++; } else { j = 1; } //xorで復号化 _byt[i] = (byte)(_byt[i] ^ _key[j - 1]); } //byteを文字列に戻す return Encoding.ASCII.GetString(_byt); } } }