首页 > 代码库 > C# DES加密类,16位的加密。
C# DES加密类,16位的加密。
这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题。
可以直接调用里面的加密和解密的方法。
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;using System.Security.Cryptography;using System.IO;namespace EallNum.Helper{ public class FI_DesTools { private FI_DesTools() { } private static string key = "×××××"; /// <summary> /// 对称加密解密的密钥 /// </summary> public static string Key { get { return key; } set { key = value; } } /// <summary> /// DES加密 /// </summary> /// <param name="encryptString"></param> /// <returns></returns> public static string DesEncrypt(string strEncryptString) { StringBuilder strRetValue = new StringBuilder(); try { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; byte[] inputByteArray = Encoding.UTF8.GetBytes(strEncryptString); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法 provider.Padding = PaddingMode.Zeros;//自动补0 MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); //不使用base64编码 //return Convert.ToBase64String(mStream.ToArray()); //组织成16进制字符串 foreach (byte b in mStream.ToArray()) { strRetValue.AppendFormat("{0:X2}", b); } } catch (Exception e) { Console.WriteLine(e); } return strRetValue.ToString(); } /// <summary> /// DES解密 /// </summary> /// <param name="decryptString"></param> /// <returns></returns> public static string DesDecrypt(string strDecryptString) { string strRetValue = http://www.mamicode.com/""; try { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; //不使用base64解码 //byte[] inputByteArray = Convert.FromBase64String(decryptString); //16进制转换为byte字节 byte[] inputByteArray = new byte[strDecryptString.Length / 2]; for (int x = 0; x < strDecryptString.Length / 2; x++) { int i = (Convert.ToInt32(strDecryptString.Substring(x * 2, 2), 16)); inputByteArray[x] = (byte)i; } DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法 provider.Padding = PaddingMode.Zeros;//自动补0 MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); //需要去掉结尾的null字符 //strRetValue = http://www.mamicode.com/Encoding.UTF8.GetString(mStream.ToArray()); strRetValue = http://www.mamicode.com/Encoding.UTF8.GetString(mStream.ToArray()).TrimEnd(‘\0‘); } catch (Exception e) { Console.WriteLine(e); } return strRetValue; } }}
C# DES加密类,16位的加密。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。