12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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为待加密的字符串,返回值为加密后的字符串
- /// <summary>
- /// 字符串加密
- /// </summary>
- /// <param name="str"></param>
- /// <returns></returns>
- 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为待解密的字符串,返回值为解密后的字符串
- /// <summary>
- /// 字符串解密
- /// </summary>
- /// <param name="str"></param>
- /// <returns></returns>
- 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 "";
- }
- }
- }
- }
|