using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ant.Common { public class StringEncrypt { //key为加密密匙,可定期任意修改 private const string key = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; // EnCode为字符串加密函数,str为待加密的字符串,返回值为加密后的字符串 /// /// 字符串加密 /// /// /// public static string EnCode(string str) { if (string.IsNullOrEmpty(str)) { return ""; } byte[] buff = Encoding.Default.GetBytes(str); int j, k, m; int len = key.Length; StringBuilder sb = new StringBuilder(); Random r = new Random(); for (int i = 0; i < buff.Length; i++) { j = (byte)r.Next(6); buff[i] = (byte)((int)buff[i] ^ j); k = (int)buff[i] % len; m = (int)buff[i] / len; m = m * 8 + j; sb.Append(key.Substring(k, 1) + key.Substring(m, 1)); } return sb.ToString(); } // EnCode为字符串加密函数,str为待解密的字符串,返回值为解密后的字符串 /// /// 字符串解密 /// /// /// public static string DeCode(string str) { if (string.IsNullOrEmpty(str)) { return ""; } try { int j, k, m, n = 0; int len = key.Length; byte[] buff = new byte[str.Length / 2]; for (int i = 0; i < str.Length; i += 2) { k = key.IndexOf(str[i]); m = key.IndexOf(str[i + 1]); j = m / 8; m = m - j * 8; buff[n] = (byte)(j * len + k); buff[n] = (byte)((int)buff[n] ^ m); n++; } return Encoding.Default.GetString(buff); } catch { return ""; } } } }