12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Security.Cryptography;
- using System.Text;
- using TEAMModelOS.SDK.Helper.Common.StringHelper;
- namespace TEAMModelOS.SDK.Helper.Security.DesCrypt
- {
- public class DESCrypt
- {
- #region ========算法========
- private static string key;//密钥
- static DESCrypt()
- {
- key = "HaBook.TeamModel.SDK";
- }
- private static byte[] Keys = new byte[] { 0x12, 0x34, 0x56, 120, 0x90, 0xab, 0xcd, 0xef };//8个bit位,是DES算法的初始化向量 加解密钥也是8位;
- /// <summary>
- /// 解密字符串
- /// </summary>
- /// <param name="decryptString">是要被解密的密文数据</param>
- /// <param name="decryptKey">DES算法的工作密钥</param>
- /// <returns>明文</returns>
- public static string Decrypt(string decryptString, string decryptKey)
- {
- try
- {
- decryptKey = StringHelper.GetSubString(decryptKey, 8, "");
- decryptKey = decryptKey.PadRight(8, ' ');
- byte[] bytes = Encoding.UTF8.GetBytes(decryptKey);
- byte[] keys = Keys;
- byte[] buffer = Convert.FromBase64String(decryptString);
- DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
- MemoryStream stream = new MemoryStream();
- CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(bytes, keys), CryptoStreamMode.Write);
- stream2.Write(buffer, 0, buffer.Length);
- stream2.FlushFinalBlock();
- return Encoding.UTF8.GetString(stream.ToArray());
- }
- catch
- {
- return "";
- }
- }
- /// <summary>
- /// 加密
- /// </summary>
- /// <param name="decryptString">要被加密数据</param>
- /// <param name="decryptKey">DES算法的工作密钥</param>
- /// <returns>密文</returns>
- public static string Encrypt(string encryptString, string encryptKey)
- {
- encryptKey = StringHelper.GetSubString(encryptKey, 8, "");
- encryptKey = encryptKey.PadRight(8, ' ');
- byte[] bytes = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
- byte[] keys = Keys;
- byte[] buffer = Encoding.UTF8.GetBytes(encryptString);
- DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
- MemoryStream stream = new MemoryStream();
- CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(bytes, keys), CryptoStreamMode.Write);
- stream2.Write(buffer, 0, buffer.Length);
- stream2.FlushFinalBlock();
- return Convert.ToBase64String(stream.ToArray());//Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节。
- //Base64编码可用于在HTTP环境下传递较长的标识信息,如较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数,或者将二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
- }
- #endregion
- #region ========加密========
- /// <summary>
- /// 加密
- /// </summary>
- /// <param name="Text"></param>
- /// <returns></returns>
- public static string Encrypt(string Text)
- {
- return Encrypt(Text, key);
- }
- #endregion
- #region ========解密========
- /// <summary>
- /// 解密
- /// </summary>
- /// <param name="Text"></param>
- /// <returns></returns>
- public static string Decrypt(string Text)
- {
- return Decrypt(Text, key);
- }
- #endregion
- }
- }
|