方法一:
#region
加密解密 /// <summary> /// MD5 32位加密 /// </summary> /// <param name="str">待加密字符串</param> /// <returns>加密后的字符串</returns> public static string MD5Encode(string str) { string pwd = ""; MD5 md5 = MD5.Create();//实例化一个md5对像 // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 for (int i = 0; i < s.Length; i++) { // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 pwd = pwd + s[i].ToString("X"); } return pwd; } #endregion

 方法二:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Security.Cryptography;

namespace Bn6.Common
{
    public class IMEI
    {
        private const string _passwd = "ihlih*0037JOHT*)(PIJY*(()JI^)IO%";

        private static CipherMode _cipherMode = CipherMode.ECB;

        private static PaddingMode _paddingMode = PaddingMode.PKCS7;

        private static Encoding _encoding = Encoding.UTF8;

        private static byte[] GetKeyArray(string password)
        {
            if (password == null)
            {
                password = string.Empty;
            }

            if (password.Length < 32)
            {
                password = password.PadRight(32, '0');
            }
            else if (password.Length > 32)
            {
                password = password.Substring(0, 32);
            }
            return _encoding.GetBytes(password);
        }

        private static string ConvertByteToString(byte[] inputData)
        {
            StringBuilder sb = new StringBuilder(inputData.Length * 2);
            foreach (var b in inputData)
            {
                sb.Append(b.ToString("X2"));
            }
            return sb.ToString();
        }

        private static byte[] ConvertStringToByte(string inputString)
        {
            if (inputString == null || inputString.Length < 2)
            {
                throw new ArgumentException();
            }
            int l = inputString.Length / 2;
            byte[] result = new byte[l];
            for (int i = 0; i < l; ++i)
            {
                result[i] = Convert.ToByte(inputString.Substring(2 * i, 2), 16);
            }
            return result;
        }

        public static byte[] Encrypt(byte[] inputData, string password)
        {
            AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
            aes.Key = GetKeyArray(password);
            aes.Mode = _cipherMode;
            aes.Padding = _paddingMode;
            ICryptoTransform transform = aes.CreateEncryptor();
            byte[] data = transform.TransformFinalBlock(inputData, 0, inputData.Length);
            aes.Clear();
            return data;
        }

        public static string Encrypt(string inputString, string password)
        {
            byte[] toEncryptArray = _encoding.GetBytes(inputString);
            byte[] result = Encrypt(toEncryptArray, password);
            return ConvertByteToString(result);
        }

        /// <summary>
        /// 加密字符串
        /// </summary>
        /// <param name="inputString"></param>
        /// <returns></returns>
        public static string EncryptString(string inputString)
        {
            return Encrypt(inputString, _passwd);
        }

        public static byte[] Decrypt(byte[] inputData, string password)
        {
            AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
            aes.Key = GetKeyArray(password);
            aes.Mode = _cipherMode;
            aes.Padding = _paddingMode;
            ICryptoTransform transform = aes.CreateDecryptor();
            byte[] data = null;
            try
            {
                data = transform.TransformFinalBlock(inputData, 0, inputData.Length);
            }
            catch
            {
                return null;
            }
            aes.Clear();
            return data;
        }

        public static string Decrypt(string inputString, string password)
        {
            byte[] toDecryptArray = ConvertStringToByte(inputString);
            string decryptString = _encoding.GetString(Decrypt(toDecryptArray, password));
            return decryptString;
        }

        /// <summary>
        /// 解密字符串
        /// </summary>
        /// <param name="inputString"></param>
        /// <returns></returns>
        public static string DecryptString(string inputString)
        {
            return Decrypt(inputString, _passwd);
        }
    }
}
        //加密
        private void button1_Click(object sender, EventArgs e)
        {
            string barcode = this.txtBarcode.Text.ToString();
            string pwd = IMEI.EncryptString(barcode);
            this.txtTaskCode.Text = pwd;
        }

        //解密
        private void button2_Click(object sender, EventArgs e)
        {
            string barcode = this.txtProlineCode.Text.ToString();
            string pwd = IMEI.DecryptString(barcode);
            this.txtOrderCode.Text = pwd;
        }

 

 

 

posted on 2014-07-03 16:53  清风暮雨  阅读(166)  评论(0)    收藏  举报