2010年8月24日 星期二

簡易的XOR加解密程式!

private void button1_Click(object sender, EventArgs e)
        {
            int key = Convert.ToByte(textBox1.Text,16);
            String plain = textBox2.Text.Trim();
            String ans = getck(key, plain);
            String p2 = getck2(key, ans);
            textBox3.Text = "key:" + key + "\r" + "輸入明文:" + plain + "\r" + "加密後:" + ans + "\r" + "解密後:" + p2;
        }
        //加密
        private string getck(int key, String plain)
        {
            string ans = "";
            for (int k = 0; k < plain.Length; k++)
            {
                char c = Convert.ToChar(plain.Substring(k, 1));
                byte temp = (byte)c;
                byte result = (byte)(temp ^ key);
                if (result.ToString().Length < 4)
                {
                    ans += String.Format("{0:D4}", result);
                }
                else
                {
                    ans += result.ToString();
                }
            }
            return ans;
        }
        //解密
        private String getck2(int key, String plain)
        {
            String ans = "";
            int getInexleng = 0;
            for (int k = 0; k < plain.Length / 4; k++)
            {
                byte temp = Convert.ToByte(plain.Substring(getInexleng, 4));
                byte result = (byte)(temp ^ key);
                ans += Convert.ToChar(result).ToString();
                getInexleng += 4;
            }
            return ans;
        }

沒有留言: