zoukankan      html  css  js  c++  java
  • DES加密解密类

      1 /// <summary>
      2     /// DES加密/解密类。
      3     /// </summary>
      4     public class HXEncrypt
      5     {
      6         public HXEncrypt()
      7         {
      8         }
      9 
     10         #region DES加密
     11 
     12 
     13         #region ========加密========
     14 
     15         /// <summary>
     16         /// 加密
     17         /// </summary>
     18         /// <param name="Text"></param>
     19         /// <returns></returns>
     20         public static string Encrypt(string Text)
     21         {
     22             return Encrypt(Text, "bone");
     23         }
     24         /// <summary> 
     25         /// 加密数据 
     26         /// </summary> 
     27         /// <param name="Text"></param> 
     28         /// <param name="sKey"></param> 
     29         /// <returns></returns> 
     30         public static string Encrypt(string Text, string sKey)
     31         {
     32             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
     33             byte[] inputByteArray;
     34             inputByteArray = Encoding.Default.GetBytes(Text);
     35             des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
     36             des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
     37             System.IO.MemoryStream ms = new System.IO.MemoryStream();
     38             CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
     39             cs.Write(inputByteArray, 0, inputByteArray.Length);
     40             cs.FlushFinalBlock();
     41             StringBuilder ret = new StringBuilder();
     42             foreach (byte b in ms.ToArray())
     43             {
     44                 ret.AppendFormat("{0:X2}", b);
     45             }
     46             return ret.ToString();
     47         }
     48 
     49         #endregion
     50 
     51         #region ========解密========
     52 
     53 
     54         /// <summary>
     55         /// 解密
     56         /// </summary>
     57         /// <param name="Text"></param>
     58         /// <returns></returns>
     59         public static string Decrypt(string Text)
     60         {
     61             return Decrypt(Text, "bone");
     62         }
     63         /// <summary> 
     64         /// 解密数据 
     65         /// </summary> 
     66         /// <param name="Text"></param> 
     67         /// <param name="sKey"></param> 
     68         /// <returns></returns> 
     69         public static string Decrypt(string Text, string sKey)
     70         {
     71             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
     72             int len;
     73             len = Text.Length / 2;
     74             byte[] inputByteArray = new byte[len];
     75             int x, i;
     76             for (x = 0; x < len; x++)
     77             {
     78                 i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
     79                 inputByteArray[x] = (byte)i;
     80             }
     81             des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
     82             des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
     83             System.IO.MemoryStream ms = new System.IO.MemoryStream();
     84             CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
     85             cs.Write(inputByteArray, 0, inputByteArray.Length);
     86             cs.FlushFinalBlock();
     87             return Encoding.Default.GetString(ms.ToArray());
     88         }
     89 
     90         #endregion
     91 
     92         #endregion
     93 
     94         #region RSA非对称加密
     95 
     96 
     97         /// <summary> 
     98         /// 生成公钥,私钥对
     99         /// </summary> 
    100         public static string[] GenerateKeys()
    101         {
    102             string[] sKeys = new String[2];
    103             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    104             sKeys[0] = rsa.ToXmlString(true);//私钥
    105             sKeys[1] = rsa.ToXmlString(false);//公钥
    106             return sKeys;
    107         }
    108 
    109         /// <summary> 
    110         /// RSA 加密
    111         /// </summary> 
    112         /// <param name="sSource" >明文</param> 
    113         /// <param name="sPublicKey" >公钥</param> 
    114         public static string EncryptString(string sSource, string sPublicKey)
    115         {
    116             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    117             string plaintext = sSource;
    118             rsa.FromXmlString(sPublicKey);
    119             byte[] cipherbytes;
    120             byte[] byteEn = rsa.Encrypt(Encoding.UTF8.GetBytes("a"), false);
    121             cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(plaintext), false);
    122 
    123             StringBuilder sbString = new StringBuilder();
    124             for (int i = 0; i < cipherbytes.Length; i++)
    125             {
    126                 sbString.Append(cipherbytes[i] + ",");
    127             }
    128             return sbString.ToString();
    129         }
    130 
    131 
    132         /// <summary> 
    133         /// RSA 解密
    134         /// </summary> 
    135         /// <param name="sSource">密文</param> 
    136         /// <param name="sPrivateKey">私钥</param> 
    137         public static string DecryptString(String sSource, string sPrivateKey)
    138         {
    139             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    140             rsa.FromXmlString(sPrivateKey);
    141             byte[] byteEn = rsa.Encrypt(Encoding.UTF8.GetBytes("a"), false);
    142             string[] sBytes = sSource.Split(',');
    143 
    144             for (int j = 0; j < sBytes.Length; j++)
    145             {
    146                 if (sBytes[j] != "")
    147                 {
    148                     byteEn[j] = Byte.Parse(sBytes[j]);
    149                 }
    150             }
    151             byte[] plaintbytes = rsa.Decrypt(byteEn, false);
    152             return Encoding.UTF8.GetString(plaintbytes);
    153         }
    154 
    155         #endregion
    156     }
    View Code
    收藏
    关注
    评论
  • 相关阅读:
    Java 中常用缓存Cache机制的实现
    Spring普通类获取bean
    系统升级shell
    shell 操作文本内容(修改增加)
    接口实践;接口与抽象类
    Java中@Override的作用
    类实现多个接口的例子
    java 反射实践
    对象主要属性及识别
    java抽象类实践
  • 原文地址:https://www.cnblogs.com/yidengbone/p/6600739.html
Copyright © 2011-2022 走看看