首页 > 代码库 > Core DES加、解密
Core DES加、解密
安装 Portable.BouncyCastle Nuget包
地址:https://www.nuget.org/packages/Portable.BouncyCastle/
Install-Package Portable.BouncyCastle
1 using Org.BouncyCastle.Crypto; 2 using Org.BouncyCastle.Crypto.Engines; 3 using Org.BouncyCastle.Crypto.Modes; 4 using Org.BouncyCastle.Crypto.Paddings; 5 using Org.BouncyCastle.Crypto.Parameters; 6 using System; 7 using System.Collections.Generic; 8 using System.IO; 9 using System.Security.Cryptography;10 using System.Text;11 12 namespace ConsoleAppDES13 {14 class Program15 {16 public static string desData = http://www.mamicode.com/"fu kai hang";17 public static string desKey = "12345678";18 public static string desIV = "12345678";19 static void Main(string[] args)20 {21 var encrypt = DESHelper.EncryptDES(desData, desKey, desIV);22 Console.WriteLine(encrypt);23 var decrypt = DESHelper.DecryptDES(encrypt, desKey, desIV);24 Console.WriteLine(decrypt);25 Console.ReadKey();26 }27 }28 public class DESHelper29 {30 static IBlockCipher engine = new DesEngine();31 /// <summary>32 /// 使用DES加密33 /// </summary>34 /// <param name="data">待加密的字符串</param>35 /// <param name="key">加密密钥,要求8位</param>36 /// <param name="iv">偏移向量</param>37 /// <returns></returns>38 public static string EncryptDES(string data, string key, string iv)39 {40 byte[] byKey = Encoding.UTF8.GetBytes(key);41 byte[] byIV = Encoding.UTF8.GetBytes(iv);42 byte[] byData =http://www.mamicode.com/ Encoding.UTF8.GetBytes(data);43 44 BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(engine), new Pkcs7Padding());45 cipher.Init(true, new ParametersWithIV(new DesParameters(byKey), byIV));46 byte[] rv = new byte[cipher.GetOutputSize(byData.Length)];47 int tam = cipher.ProcessBytes(byData, 0, byData.Length, rv, 0);48 cipher.DoFinal(rv, tam);49 return Convert.ToBase64String(rv);50 }51 /// <summary>52 /// 使用DES解密53 /// </summary>54 /// <param name="data">待解密的字符串</param>55 /// <param name="key">解密密钥,要求8位</param>56 /// <param name="vi">偏移向量</param>57 /// <returns></returns>58 public static string DecryptDES(string data, string key, string vi)59 {60 StringBuilder ret = new StringBuilder();61 foreach (byte b in Convert.FromBase64String(data))62 {63 ret.AppendFormat("{0:X2}", b);64 }65 byte[] byData = http://www.mamicode.com/new byte[ret.ToString().Length / 2];66 for (int x = 0; x < ret.ToString().Length / 2; x++)67 {68 int i = (Convert.ToInt32(ret.ToString().Substring(x * 2, 2), 16));69 byData[x] = (byte)i;70 }71 byte[] byKey = Encoding.UTF8.GetBytes(key);72 byte[] byVI = Encoding.UTF8.GetBytes(vi);73 BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(engine));74 cipher.Init(false, new ParametersWithIV(new DesParameters(byKey), byVI));75 byte[] rv = new byte[cipher.GetOutputSize(byData.Length)];76 int tam = cipher.ProcessBytes(byData, 0, byData.Length, rv, 0);77 cipher.DoFinal(rv, tam);78 var rvl = new List<byte>();79 rvl.AddRange(rv);80 rvl.RemoveAll(b => b == 0);81 rv = rvl.ToArray();82 return Encoding.UTF8.GetString(rv);83 }84 }85 }
Core DES加、解密
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。