C#中对字符串的加密和解密
2015-12-09 16:16
543 查看
加密:
解密:
/// <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); }
相关文章推荐
- c#中,DataTable 过滤重复行
- C# 结构
- C# 关于方法中的参数(可选参数和命名参数)
- C# MVC 处理您的请求时发生异常。此外,对第一个异常执行自定义错误页时发生另一异常。已终止请求。
- (转载)C# Process.Kill() 拒绝访问(Access Denied) 的解决方案
- C# GetHashCode 的实现方式
- C#中if和#if区别
- C#中Validating和Validated事件
- C# 之泛型详解
- C#中yield return用法分析
- C# yield关键字详解
- C#操作字符串string
- C# 继承
- C#实现简单的SmtpClient发送邮件
- c#不重复的排序方法
- C# 封装,继承,多态
- c#播放声音文件
- C#中string类型前加@标志的作用
- C#中 virtual 和 abstract 的区别
- C# 清除事件绑定的函数