zoukankan      html  css  js  c++  java
  • 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);
            }


  • 相关阅读:
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    sql之group by的用法
    jmeter参数化
    jmeter--FTP测试
    jmeter基础概念
    开源性能测试工具——jemeter介绍+安装说明
    mysql安装图解 mysql图文安装教程(详细说明)
    Elasticsearch全文检索优化研究
    如何正确的关闭Elasticsearch集群
    自定义查询系统架构设计分析
  • 原文地址:https://www.cnblogs.com/fyq891014/p/5057950.html
Copyright © 2011-2022 走看看