/// <summary>
/// 密钥
/// </summary>
private const string XorEncryptKey = "www.slowx.net";
/// <summary>
/// 字符串转成byte[]数组的String
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string StringToByteArrayString(string str)
{
if (str == null || str.Length == 0)
return "";
byte[] byteArray = Encoding.Default.GetBytes(str);
return ByteArrayToString(byteArray);
}
/// <summary>
/// 字符串转成byte[]数组的String
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string StringToByteArrayString(string str, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return "";
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
byte[] byteArray = _encoding.GetBytes(str);
return ByteArrayToString(byteArray);
}
/// <summary>
///
/// </summary>
/// <param name="byteArray"></param>
/// <returns></returns>
public static string ByteArrayToString(byte[] byteArray)
{
if (byteArray == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> byte[] byteArray 为空。");
}
StringBuilder theResult = new StringBuilder();
foreach (byte b in byteArray)
{
theResult.Append(b.ToString().PadLeft(3, '0'));
}
return theResult.ToString();
}
/// <summary>
/// 字符串转成byte[]数组
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static byte[] StringToByteArray(string str)
{
if (str == null || str.Length == 0)
return null;
int iLen = str.Length;
if (iLen % 3 != 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "iLen % 3 != 0,传入的字符串不是合理的byte[]值。");
}
int iArrayLen = iLen / 3;
byte[] theResult = new byte[iArrayLen];
string strItem = string.Empty;
byte bItem = 1;
for (int i = 0; i < iArrayLen; ++i)
{
strItem = str.Substring(i * 3, 3);
bItem = byte.Parse(strItem);
theResult[i] = bItem;
}
return theResult;
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ByteArrayStringToString(string str)
{
byte[] bArray = StringToByteArray(str);
return Encoding.Default.GetString(bArray);
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string ByteArrayStringToString(string str, System.Text.Encoding _encoding)
{
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
byte[] bArray = StringToByteArray(str);
return _encoding.GetString(bArray);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static byte[] XorEncryptToByteArray(string str)
{
return XorEncryptToByteArray(str, XorEncryptKey, Encoding.Default);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static byte[] XorEncryptToByteArray(string str, System.Text.Encoding _encoding)
{
return XorEncryptToByteArray(str, XorEncryptKey, _encoding);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static byte[] XorEncryptToByteArray(string str, string key)
{
return XorEncryptToByteArray(str, key, Encoding.Default);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static byte[] XorEncryptToByteArray(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
byte[] byteText = _encoding.GetBytes(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return byteText;
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string XorEncryptToByteArrayString(string str)
{
return XorEncryptToByteArrayString(str, XorEncryptKey, Encoding.Default);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorEncryptToByteArrayString(string str, System.Text.Encoding _encoding)
{
return XorEncryptToByteArrayString(str, XorEncryptKey, _encoding);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string XorEncryptToByteArrayString(string str, string key)
{
return XorEncryptToByteArrayString(str, key, Encoding.Default);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorEncryptToByteArrayString(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
byte[] byteText = _encoding.GetBytes(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return _encoding.GetString(byteText);
}
/// <summary>
/// 加密字符串成为String
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string XorEncryptToString(string str)
{
return XorEncryptToString(str, XorEncryptKey, Encoding.Default);
}
/// <summary>
/// 加密字符串成为String
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorEncryptToString(string str, System.Text.Encoding _encoding)
{
return XorEncryptToString(str, XorEncryptKey, _encoding);
}
/// <summary>
/// 加密字符串成为String
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string XorEncryptToString(string str, string key)
{
return XorEncryptToString(str, key, Encoding.Default);
}
/// <summary>
/// 加密字符串成为String
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorEncryptToString(string str, string key, System.Text.Encoding _encoding)
{
Byte[] byteText = XorEncryptToByteArray(str, key, _encoding);
return ByteArrayToString(byteText);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static byte[] XorDecryptToByteArray(string str)
{
return XorDecryptToByteArray(str, XorEncryptKey, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static byte[] XorDecryptToByteArray(string str, System.Text.Encoding _encoding)
{
return XorDecryptToByteArray(str, XorEncryptKey, _encoding);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static byte[] XorDecryptToByteArray(string str, string key)
{
return XorDecryptToByteArray(str, key, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static byte[] XorDecryptToByteArray(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
Byte[] byteText = StringToByteArray(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return byteText;
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string XorDecryptToString(string str)
{
return XorDecryptToString(str, XorEncryptKey, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorDecryptToString(string str, System.Text.Encoding _encoding)
{
return XorDecryptToString(str, XorEncryptKey, _encoding);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string XorDecryptToString(string str, string key)
{
return XorDecryptToString(str, key, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorDecryptToString(string str, string key, System.Text.Encoding _encoding)
{
Byte[] byteText = XorDecryptToByteArray(str, key, _encoding);
string theResult = _encoding.GetString(byteText);
return theResult;
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string XorDecryptToByteArrayString(string str)
{
return XorDecryptToByteArrayString(str, XorEncryptKey, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorDecryptToByteArrayString(string str, System.Text.Encoding _encoding)
{
return XorDecryptToByteArrayString(str, XorEncryptKey, _encoding);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string XorDecryptToByteArrayString(string str, string key)
{
return XorDecryptToByteArrayString(str, key, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string XorDecryptToByteArrayString(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
Byte[] byteText = StringToByteArray(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return _encoding.GetString(byteText);
}