zoukankan      html  css  js  c++  java
  • DESC加密解密算法

    using System;
    using System.Text;
    using System.Windows.Forms;
    using System.Security.Cryptography;
    using System.IO;
    using System.Collections;
    
    namespace test
    {
        public partial class frm_DESC : Form
        {
            public frm_DESC()
            {
                InitializeComponent();
            }
    
            public string EncryptDES(string code)
            {
                string str;
                byte[] bytes = Encoding.UTF8.GetBytes(code);
                using (TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider())
                {
                    provider.Key = Encoding.ASCII.GetBytes("6x0017^mM*"p:edx001aacO@jPH9^Px#");
                    provider.IV = Encoding.ASCII.GetBytes("De 63A&*");
                    using (MemoryStream stream = new MemoryStream())
                    {
                        using (CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                            stream2.Write(bytes, 0, bytes.Length);
                            stream2.FlushFinalBlock();
                        }
                        str = Convert.ToBase64String(stream.ToArray());
                    }
                }
                return str;
            }
    
            public string DecryptDES(string password, string verify)
            {
                string str;
                if (verify != "ZZR")
                {
                    return "";
                }
                byte[] buffer = Convert.FromBase64String(password);
                using (TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider())
                {
                    provider.Key = Encoding.ASCII.GetBytes("6x0017^mM*"p:edx001aacO@jPH9^Px#");
                    provider.IV = Encoding.ASCII.GetBytes("De 63A&*");
                    using (MemoryStream stream = new MemoryStream())
                    {
                        using (CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write))
                        {
                            stream2.Write(buffer, 0, buffer.Length);
                            stream2.FlushFinalBlock();
                            stream2.Close();
                        }
                        str = Encoding.UTF8.GetString(stream.ToArray());
                    }
                }
                return str;
            }
    
            public static string GetEncryptionPwd(string pwd, string number)
            {
                int num;
                pwd = pwd.ToLower();
                string str = "QIAN" + pwd;
                for (num = 0; num < number.Length; num += 2)
                {
                    str = str + number.Substring(num, 1);
                }
                str = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str + "CHUANG", "MD5");
    
                var list = new ArrayList();
                for (num = 0; num < str.Length; num++)
                {
                    list.Add(str.Substring(num, 1));
                }
                list.Reverse();
                str = "";
                for (num = 0; num < list.Count; num++)
                {
                    str = str + list[num];
                }
                return str;
            }
    
            private void btn_Decrypt_Click(object sender, EventArgs e)
            {
                string str = txt_Decrypt.Text.Trim();
                txt_Enctry.Text = DecryptDES(str, "ZZR");
            }
    
            private void btn_Encrypt_Click(object sender, EventArgs e)
            {
                string str = txt_Enctry.Text.Trim();
                txt_Decrypt.Text = EncryptDES(str);
            }
    
            private void btn_MD5_Click(object sender, EventArgs e)
            {
                string number = txt_Number.Text.Trim();
                string pwd = txt_Enctry.Text.Trim();
                txt_Decrypt.Text = GetEncryptionPwd(pwd, number);
            }
        }
    }
  • 相关阅读:
    数组名与指向数组的指针
    如何实现带可变长参数的函数
    assert()的使用
    参数入栈的顺序以及栈/堆的生长顺序
    指向函数的指针
    各变量入栈顺序
    数组与指针
    C中空指针、NULL与0
    C中为什么不能用==比较字符串?
    在命令行窗口中输入EOF
  • 原文地址:https://www.cnblogs.com/Jeely/p/11720767.html
Copyright © 2011-2022 走看看