/IMChat/RSA/DESHelper.cs
https://github.com/chenshunliang/MyTestHub · C# · 75 lines · 59 code · 4 blank · 12 comment · 0 complexity · 09d463e04ef24d68d1532679dab98646 MD5 · raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace RSA
- {
- public static class DESHelper
- {
-
- public static void CreateKeyAndIV(out string key, out string IV)
- {
- DESCryptoServiceProvider des = new DESCryptoServiceProvider();
- byte[] data = new byte[0x10];
- new RNGCryptoServiceProvider().GetBytes(data);
- string longkey = Convert.ToBase64String(data);
- key = longkey.Substring(0, 8);
- IV = longkey.Substring(0, 8);
- }
-
- /// <summary>
- /// 进行DES加密。
- /// </summary>
- /// <param name="pToEncrypt">要加密的字符串。</param>
- /// <param name="sKey">密钥,且必须为8位。</param>
- /// <returns>以Base64格式返回的加密字符串。</returns>
- public static string Encrypt(string pToEncrypt, string sKey)
- {
- using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
- {
- byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
- des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
- des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
- using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cs.Write(inputByteArray, 0, inputByteArray.Length);
- cs.FlushFinalBlock();
- cs.Close();
- }
- string str = Convert.ToBase64String(ms.ToArray());
- ms.Close();
- return str;
- }
- }
-
- /// <summary>
- /// 进行DES解密。
- /// </summary>
- /// <param name="pToDecrypt">要解密的以Base64</param>
- /// <param name="sKey">密钥,且必须为8位。</param>
- /// <returns>已解密的字符串。</returns>
- public static string Decrypt(string pToDecrypt, string sKey)
- {
- byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
- using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
- {
- des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
- des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
- using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
- {
- cs.Write(inputByteArray, 0, inputByteArray.Length);
- cs.FlushFinalBlock();
- cs.Close();
- }
- string str = Encoding.UTF8.GetString(ms.ToArray());
- ms.Close();
- return str;
- }
- }
- }
- }