zoukankan      html  css  js  c++  java
  • C#的DES加密

      1 第一种:
      2 using System;
      3 using System.Text;
      4 using System.Security.Cryptography;
      5 using System.IO;
      6 
      7 /// <summary>
      8 /// Summary description for EncryptAndDecrypt
      9 /// </summary>
     10 public class EncryptAndDecrypt
     11 {
     12     //默认密钥向量
     13     private static byte[] Keys = { 0x120x340x560x780x900xAB0xCD0xEF };
     14     /**//// <summary>
     15     /// DES加密字符串
     16     /// </summary>
     17     /// <param name="encryptString">待加密的字符串</param>
     18     /// <param name="encryptKey">加密密钥,要求为8位</param>
     19     /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
     20     public static string EncryptDES(string encryptString, string encryptKey)
     21     {
     22         try
     23         {           
     24             byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(08));
     25             byte[] rgbIV = Keys;
     26             byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
     27              DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
     28              MemoryStream mStream = new MemoryStream();
     29              CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
     30              cStream.Write(inputByteArray, 0, inputByteArray.Length);
     31              cStream.FlushFinalBlock();
     32             return Convert.ToBase64String(mStream.ToArray());
     33          }
     34         catch
     35         {
     36             return encryptString;
     37         }
     38     }
     39 
     40     /**//// <summary>
     41     /// DES解密字符串
     42     /// </summary>
     43     /// <param name="decryptString">待解密的字符串</param>
     44     /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
     45     /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
     46     public static string DecryptDES(string decryptString, string decryptKey)
     47     {
     48         try
     49         {
     50             byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
     51             byte[] rgbIV = Keys;
     52             byte[] inputByteArray = Convert.FromBase64String(decryptString);
     53              DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
     54              MemoryStream mStream = new MemoryStream();
     55              CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
     56              cStream.Write(inputByteArray, 0, inputByteArray.Length);
     57              cStream.FlushFinalBlock();
     58             return Encoding.UTF8.GetString(mStream.ToArray());
     59          }
     60         catch
     61          {
     62             return decryptString;
     63          }
     64     }
     65 }
     66 第二种:
     67 
     68 //名称空间
     69 using System;
     70 using System.Security.Cryptography;
     71 using System.IO;
     72 using System.Text; 
     73 
     74 /// <summary>
     75 /// Summary description for Encryption
     76 /// </summary>
     77 public class Encryption
     78 {
     79     /// <summary>
     80     /// Default Key
     81     /// </summary>
     82     public const string Key = "bmc.1001";
     83     /// <summary>
     84     /// Initial
     85     /// </summary>
     86     public Encryption()
     87     {
     88        ///
     89     }
     90     /// <summary>
     91     /// 加密方法
     92     /// </summary>
     93     /// <param name="pToEncrypt"></param>
     94     /// <param name="sKey"></param>
     95     /// <returns></returns>
     96     public string Encrypt(string pToEncrypt, string sKey)
     97     {
     98         DESCryptoServiceProvider des = new DESCryptoServiceProvider();
     99         //把字符串放到byte数组中
    100         //原来使用的UTF8编码,我改成Unicode编码了,不行
    101         byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
    102         //byte[]  inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt); 
    103 
    104         //建立加密对象的密钥和偏移量
    105         //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
    106         //使得输入密码必须输入英文文本
    107         des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    108         des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
    109         //创建其支持存储区为内存的流
    110         MemoryStream ms = new MemoryStream();
    111         //将数据流链接到加密转换的流
    112         CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    113         //Write  the  byte  array  into  the  crypto  stream 
    114         //(It  will  end  up  in  the  memory  stream) 
    115         cs.Write(inputByteArray, 0, inputByteArray.Length);
    116         //用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区
    117         cs.FlushFinalBlock();
    118         //Get  the  data  back  from  the  memory  stream,  and  into  a  string 
    119         byte[] EncryptData = (byte[])ms.ToArray();
    120         return System.Convert.ToBase64String(EncryptData, 0, EncryptData.Length);
    121     }
    122     /// <summary>
    123     /// 解密方法
    124     /// </summary>
    125     /// <param name="pToDecrypt"></param>
    126     /// <param name="sKey"></param>
    127     /// <returns></returns> 
    128     public string Decrypt(string pToDecrypt, string sKey)
    129     {
    130         DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    131         //Put  the  input  string  into  the  byte  array 
    132         byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
    133        
    134         //建立加密对象的密钥和偏移量,此值重要,不能修改
    135         des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    136         des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
    137         MemoryStream ms = new MemoryStream();
    138         CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    139         //Flush  the  data  through  the  crypto  stream  into  the  memory  stream 
    140         cs.Write(inputByteArray, 0, inputByteArray.Length);
    141         cs.FlushFinalBlock();
    142         return System.Text.Encoding.Default.GetString(ms.ToArray());
    143     }
    144 }
    145 
  • 相关阅读:
    js库链接
    小程序实现textarea行数自动增加
    小程序中公告消息自动向左滚动(关闭三次之后不再提示公告信息)
    jQuery实现点击div外的区域,来隐藏指定节点
    Unity AssetBundle爬坑手记
    换装demo随手记
    Untiy PoolManager随手记
    unity常用插件
    Untiy一些方法前特殊标签记录
    Unity网格合并_材质合并
  • 原文地址:https://www.cnblogs.com/yank/p/938180.html
Copyright © 2011-2022 走看看