异或加密解密

2015-12-13 21:54:31  访问(3306) 赞(0) 踩(0)


相关下载:SlowX.XorEncryptOperApp[code]  SlowX.XorEncryptOperApp[release]  百度网盘     



  • 
    
            /// <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);
            }
    
    
    

标签:异或加密解密 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)