• C#中对字符串的加密和解密


    加密:

    /// <summary>
            /// 对字符串进行加密
            /// </summary>
            /// <param name="proclaimText"></param>
            /// <returns></returns>
            public static string CipherText(string proclaimText)
            {
                if (proclaimText.IsEmpty()) return proclaimText;
    
                byte[] proclaimBytes = UnicodeEncoding.BigEndianUnicode.GetBytes(proclaimText);
                int proclaimBytesCount = proclaimBytes.Length;
                byte[] cipherBytes = new byte[proclaimBytesCount * 2];
    
                for (int i = 0; i < proclaimBytesCount; i += 2)
                {
                    byte proclaimByte = proclaimBytes[i];
                    int upperByte = proclaimByte & 0xf0;
                    int lowerByte = proclaimByte & 0x0f;
                    upperByte = upperByte >> 4;
                    lowerByte = lowerByte << 4;
    
                    byte proclaimByte2 = proclaimBytes[i + 1];
                    int upperByte2 = proclaimByte2 & 0xf0;
                    int lowerByte2 = proclaimByte2 & 0x0f;
                    upperByte2 |= upperByte;
                    lowerByte2 |= lowerByte;
    
                    cipherBytes[i * 2] = 0x4e;
                    cipherBytes[i * 2 + 1] = Convert.ToByte(upperByte2);
                    cipherBytes[(i + 1) * 2] = 0x4f;
                    cipherBytes[(i + 1) * 2 + 1] = Convert.ToByte(lowerByte2);
                }
                return UnicodeEncoding.BigEndianUnicode.GetString(cipherBytes, 0, cipherBytes.Length);
            }

    解密:

    /// <summary>
            /// 对字符串进行解密
            /// </summary>
            /// <param name="proclaimText"></param>
            /// <returns></returns>
            public static string DoProclaimText(string CipherText)
            {
                if (CipherText.IsEmpty()) return CipherText;
    
                byte[] cipherBytes = UnicodeEncoding.BigEndianUnicode.GetBytes(CipherText);
                int cipherBytesCount = cipherBytes.Length;
    
                byte[] proclaimBytes = new byte[cipherBytesCount / 2];
    
                for (int i = 0; i < cipherBytesCount; i += 4)
                {
                    byte cipherByte1 = cipherBytes[i + 1];
                    byte cipherByte2 = cipherBytes[i + 3];
    
                    int lowerByte = (cipherByte1 & 0x0f) << 4;
                    int upperByte = cipherByte1 & 0xf0;
    
                    int lowerByte2 = cipherByte2 & 0x0f;
                    int upperByte2 = (cipherByte2 & 0xf0) >> 4;
    
                    proclaimBytes[i / 2] = Convert.ToByte(lowerByte | upperByte2);
                    proclaimBytes[i / 2 + 1] = Convert.ToByte(upperByte | lowerByte2);
                }
                return UnicodeEncoding.BigEndianUnicode.GetString(proclaimBytes, 0, proclaimBytes.Length);
            }


  • 相关阅读:
    jsp4个作用域
    jsp9个内置对象
    jsp指令
    jsp注释
    jsp原理
    java面试
    代理
    泛型
    exception
    基础
  • 原文地址:https://www.cnblogs.com/fyq891014/p/5057950.html
Copyright © 2020-2023  润新知