public class RondomEncrypt
{
//定义加密用户密码所用的伪随机数
private static string randStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
#region 使用伪随机数加密后字符串
/// <summary>
/// 使用伪随机数加密字符串
/// </summary>
/// <param name="str">字符串</param>
/// <returns>加密后的字符串</returns>
public static string EncryptStr(string str)
{
byte[] btData = Encoding.Default.GetBytes(str);
int j, k, m;
int len = randStr.Length;
StringBuilder sb = new StringBuilder();
Random rand = new Random();
for (int i = 0; i < btData.Length; i++)
{
j = (byte)rand.Next(6);
btData[i] = (byte)((int)btData[i] ^ j);
k = (int)btData[i] % len;
m = (int)btData[i] / len;
m = m * 8 + j;
sb.Append(randStr.Substring(k, 1) + randStr.Substring(m, 1));
}
return sb.ToString();
}
#endregion
#region 解密字符串
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str">经过加密的字符串</param>
/// <returns>解密后的字符串</returns>
public static string DecryptStr(string str)
{
try
{
int j, k, m, n = 0;
int len = randStr.Length;
byte[] btData = new byte[str.Length / 2];
for (int i = 0; i < str.Length; i += 2)
{
k = randStr.IndexOf(str[i]);
m = randStr.IndexOf(str[i + 1]);
j = m / 8;
m = m - j * 8;
btData[n] = (byte)(j * len + k);
btData[n] = (byte)((int)btData[n] ^ m);
n++;
}
return Encoding.Default.GetString(btData);
}
catch { return ""; }
}
#endregion
}