方法一:
#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; }
                    
                
                
            
        
浙公网安备 33010602011771号