真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在.NET中使用RSA進(jìn)行加密解密-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何在.NET中使用RSA進(jìn)行加密解密,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新新互聯(lián),憑借十余年的成都網(wǎng)站設(shè)計、網(wǎng)站制作經(jīng)驗,本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計網(wǎng)站有近千家案例。做網(wǎng)站建設(shè),選成都創(chuàng)新互聯(lián)

PassWordHelper.cs代碼:


using System;
using System.IO;
using System.Text;
using System.Globalization;
using System.Collections.Generic;
using System.Security.Cryptography;

namespace Utils
{
  /// 
  /// 密碼加密解密操作相關(guān)類
  /// 
  public static class PassWordHelper
  {
    #region MD5 加密

    /// 
    /// MD5加密
    /// 
    public static string Md532(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      MD5 md5 = MD5.Create();
      return HashAlgorithmBase(md5, source, encoding);
    }

    /// 
    /// 加鹽MD5加密
    /// 
    public static string Md532Salt(this string source, string salt)
    {
      return string.IsNullOrEmpty(source) ? source.Md532() : (source + "『" + salt + "』").Md532();
    }

    #endregion

    #region SHA 加密

    /// 
    /// SHA1 加密
    /// 
    public static string Sha1(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      SHA1 sha1 = new SHA1CryptoServiceProvider();
      return HashAlgorithmBase(sha1, source, encoding);
    }

    /// 
    /// SHA256 加密
    /// 
    public static string Sha256(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      SHA256 sha256 = new SHA256Managed();
      return HashAlgorithmBase(sha256, source, encoding);
    }

    /// 
    /// SHA512 加密
    /// 
    public static string Sha512(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      SHA512 sha512 = new SHA512Managed();
      return HashAlgorithmBase(sha512, source, encoding);
    }

    #endregion

    #region HMAC 加密

    /// 
    /// HmacSha1 加密
    /// 
    public static string HmacSha1(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA1 hmacSha1 = new HMACSHA1(keyStr);
      return HashAlgorithmBase(hmacSha1, source, encoding);
    }

    /// 
    /// HmacSha256 加密
    /// 
    public static string HmacSha256(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA256 hmacSha256 = new HMACSHA256(keyStr);
      return HashAlgorithmBase(hmacSha256, source, encoding);
    }

    /// 
    /// HmacSha384 加密
    /// 
    public static string HmacSha384(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA384 hmacSha384 = new HMACSHA384(keyStr);
      return HashAlgorithmBase(hmacSha384, source, encoding);
    }

    /// 
    /// HmacSha512 加密
    /// 
    public static string HmacSha512(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA512 hmacSha512 = new HMACSHA512(keyStr);
      return HashAlgorithmBase(hmacSha512, source, encoding);
    }

    /// 
    /// HmacMd5 加密
    /// 
    public static string HmacMd5(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACMD5 hmacMd5 = new HMACMD5(keyStr);
      return HashAlgorithmBase(hmacMd5, source, encoding);
    }

    /// 
    /// HmacRipeMd160 加密
    /// 
    public static string HmacRipeMd160(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACRIPEMD160 hmacRipeMd160 = new HMACRIPEMD160(keyStr);
      return HashAlgorithmBase(hmacRipeMd160, source, encoding);
    }

    #endregion

    #region AES 加密解密

    ///  
    /// AES加密 
    ///  
    /// 待加密字段 
    /// 密鑰值 
    /// 加密輔助向量 
    ///  
    public static string AesStr(this string source, string keyVal, string ivVal)
    {
      var encoding = Encoding.UTF8;
      byte[] btKey = keyVal.FormatByte(encoding);
      byte[] btIv = ivVal.FormatByte(encoding);
      byte[] byteArray = encoding.GetBytes(source);
      string encrypt;
      Rijndael aes = Rijndael.Create();
      using (MemoryStream mStream = new MemoryStream())
      {
        using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write))
        {
          cStream.Write(byteArray, 0, byteArray.Length);
          cStream.FlushFinalBlock();
          encrypt = Convert.ToBase64String(mStream.ToArray());
        }
      }
      aes.Clear();
      return encrypt;
    }

    ///  
    /// AES解密 
    ///  
    /// 待加密字段 
    /// 密鑰值 
    /// 加密輔助向量 
    ///  
    public static string UnAesStr(this string source, string keyVal, string ivVal)
    {
      var encoding = Encoding.UTF8;
      byte[] btKey = keyVal.FormatByte(encoding);
      byte[] btIv = ivVal.FormatByte(encoding);
      byte[] byteArray = Convert.FromBase64String(source);
      string decrypt;
      Rijndael aes = Rijndael.Create();
      using (MemoryStream mStream = new MemoryStream())
      {
        using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
        {
          cStream.Write(byteArray, 0, byteArray.Length);
          cStream.FlushFinalBlock();
          decrypt = encoding.GetString(mStream.ToArray());
        }
      }
      aes.Clear();
      return decrypt;
    }

    ///  
    /// AES Byte類型 加密 
    ///  
    /// 待加密明文 
    /// 密鑰值 
    /// 加密輔助向量 
    ///  
    public static byte[] AesByte(this byte[] data, string keyVal, string ivVal)
    {
      byte[] bKey = new byte[32];
      Array.Copy(Encoding.UTF8.GetBytes(keyVal.PadRight(bKey.Length)), bKey, bKey.Length);
      byte[] bVector = new byte[16];
      Array.Copy(Encoding.UTF8.GetBytes(ivVal.PadRight(bVector.Length)), bVector, bVector.Length);
      byte[] cryptograph;
      Rijndael aes = Rijndael.Create();
      try
      {
        using (MemoryStream mStream = new MemoryStream())
        {
          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write))
          {
            cStream.Write(data, 0, data.Length);
            cStream.FlushFinalBlock();
            cryptograph = mStream.ToArray();
          }
        }
      }
      catch
      {
        cryptograph = null;
      }
      return cryptograph;
    }

    ///  
    /// AES Byte類型 解密 
    ///  
    /// 待解密明文 
    /// 密鑰值 
    /// 加密輔助向量 
    ///  
    public static byte[] UnAesByte(this byte[] data, string keyVal, string ivVal)
    {
      byte[] bKey = new byte[32];
      Array.Copy(Encoding.UTF8.GetBytes(keyVal.PadRight(bKey.Length)), bKey, bKey.Length);
      byte[] bVector = new byte[16];
      Array.Copy(Encoding.UTF8.GetBytes(ivVal.PadRight(bVector.Length)), bVector, bVector.Length);
      byte[] original;
      Rijndael aes = Rijndael.Create();
      try
      {
        using (MemoryStream mStream = new MemoryStream(data))
        {
          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bVector), CryptoStreamMode.Read))
          {
            using (MemoryStream originalMemory = new MemoryStream())
            {
              byte[] buffer = new byte[1024];
              int readBytes;
              while ((readBytes = cStream.Read(buffer, 0, buffer.Length)) > 0)
              {
                originalMemory.Write(buffer, 0, readBytes);
              }

              original = originalMemory.ToArray();
            }
          }
        }
      }
      catch
      {
        original = null;
      }
      return original;
    }

    #endregion

    #region RSA 加密解密

    //密鑰對,請配合密鑰生成工具使用『 http://download.csdn.net/detail/downiis6/9464639 』
    private const string PublicRsaKey = @"
 8Yvf/LjXRhCuOREk2CuSYvbD/RadwJ4sjHREIpQVKwkTlG3BtRgpnaMcoeLAesmwvpBWnqK4hBkYLxhRj+NEKnlGrJ+LkNMnZr0/4CMuulZFAnx7iQYaSq7Eh7kBKGLofc05CjZguYpnPNxHIv4VNx+a9tIh+hnhjrmkJLUm3l0=
 AQAB
";
    private const string PrivateRsaKey = @"
 8Yvf/LjXRhCuOREk2CuSYvbD/RadwJ4sjHREIpQVKwkTlG3BtRgpnaMcoeLAesmwvpBWnqK4hBkYLxhRj+NEKnlGrJ+LkNMnZr0/4CMuulZFAnx7iQYaSq7Eh7kBKGLofc05CjZguYpnPNxHIv4VNx+a9tIh+hnhjrmkJLUm3l0=
 AQAB
 

/xAaa/4dtDxcEAk5koSZBPjuxqvKJikpwLA1nCm3xxAUMDVxSwQyr+SHFaCnBN9kqaNkQCY6kDCfJXFWPOj0Bw==

 8m8PFVA4sO0oEKMVQxt+ivDTHFuk/W154UL3IgC9Y6bzlvYewXZSzZHmxZXXM1lFtwoYG/k+focXBITsiJepew==  ONVSvdt6rO2CKgSUMoSfQA9jzRr8STKE3i2lVG2rSIzZosBVxTxjOvQ18WjBroFEgdQpg23BQN3EqGgvqhTSQw==  gfp7SsEM9AbioTDemHEoQlPly+FyrxE/9D8UAt4ErGX5WamxSaYntOGRqcOxcm1djEpULMNP90R0Wc7uhjlR+w==  C0eBsp2iMOxWwKo+EzkHOP0H+YOitUVgjekGXmSt9a3TvikQNaJ5ATlqKsZaMGsnB6UIHei+kUaCusVX0HgQ2A==  tPYxEfo9Nb3LeO+SJe3G1yO+w37NIwCdqYB1h25f2YUMSThNVmpKy1HnYpUp1RQDuVETw/duu3C9gJL8kAsZBjBrVZ0zC/JZsgvSNprfUK3Asc4FgFsGfQGKW1nvvgdMbvqr4ClB0R8czkki+f9Oc5ea/RMqXxlI+XjzMYDEknU=
";     ///      /// RSA 加密     ///      public static string Rsa(this string source)     {       RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();       rsa.FromXmlString(PublicRsaKey);       var cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), true);       return Convert.ToBase64String(cipherbytes);     }     ///      /// RSA解密     ///      public static string UnRsa(this string source)     {       RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();       rsa.FromXmlString(PrivateRsaKey);       var cipherbytes = rsa.Decrypt(Convert.FromBase64String(source), true);       return Encoding.UTF8.GetString(cipherbytes);     }     #endregion     #region DES 加密解密     ///      /// DES 加密     ///      public static string Des(this string source, string keyVal, string ivVal)     {       try       {         byte[] data = Encoding.UTF8.GetBytes(source);         var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };         var desencrypt = des.CreateEncryptor();         byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);         return BitConverter.ToString(result);       }       catch { return "轉(zhuǎn)換出錯!"; }     }     ///      /// DES 解密     ///      public static string UnDes(this string source, string keyVal, string ivVal)     {       try       {         string[] sInput = source.Split("-".ToCharArray());         byte[] data = new byte[sInput.Length];         for (int i = 0; i < sInput.Length; i++)         {           data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);         }         var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };         var desencrypt = des.CreateDecryptor();         byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);         return Encoding.UTF8.GetString(result);       }       catch { return "解密出錯!"; }     }     #endregion     #region TripleDES 加密解密     ///      /// DES3 加密     ///      public static string Des3(this string source, string keyVal)     {       try       {         TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider         {           Key = keyVal.FormatByte(Encoding.UTF8),           Mode = CipherMode.ECB,           Padding = PaddingMode.PKCS7         };         using (MemoryStream ms = new MemoryStream())         {           byte[] btArray = Encoding.UTF8.GetBytes(source);           try           {             using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))             {               cs.Write(btArray, 0, btArray.Length);               cs.FlushFinalBlock();             }             return ms.ToArray().Bytes2Str();           }           catch { return source; }         }       }       catch       {         return "TripleDES加密出現(xiàn)錯誤";       }     }     ///      /// DES3 解密     ///      public static string UnDes3(this string source, string keyVal)     {       try       {         byte[] byArray = source.Str2Bytes();         TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider         {           Key = keyVal.FormatByte(Encoding.UTF8),           Mode = CipherMode.ECB,           Padding = PaddingMode.PKCS7         };         using (MemoryStream ms = new MemoryStream())         {           using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))           {             cs.Write(byArray, 0, byArray.Length);             cs.FlushFinalBlock();             cs.Close();             ms.Close();             return Encoding.UTF8.GetString(ms.ToArray());           }         }       }       catch       {         return "TripleDES解密出現(xiàn)錯誤";       }     }     #endregion     #region BASE64 加密解密     ///      /// BASE64 加密     ///      /// 待加密字段     ///      public static string Base64(this string source)     {       var btArray = Encoding.UTF8.GetBytes(source);       return Convert.ToBase64String(btArray, 0, btArray.Length);     }     ///      /// BASE64 解密     ///      /// 待解密字段     ///      public static string UnBase64(this string source)     {       var btArray = Convert.FromBase64String(source);       return Encoding.UTF8.GetString(btArray);     }     #endregion     #region 內(nèi)部方法     ///      /// 轉(zhuǎn)成數(shù)組     ///      private static byte[] Str2Bytes(this string source)     {       source = source.Replace(" ", "");       byte[] buffer = new byte[source.Length / 2];       for (int i = 0; i < source.Length; i += 2) buffer[i / 2] = Convert.ToByte(source.Substring(i, 2), 16);       return buffer;     }     ///      /// 轉(zhuǎn)換成字符串     ///      private static string Bytes2Str(this IEnumerable source, string formatStr = "{0:X2}")     {       StringBuilder pwd = new StringBuilder();       foreach (byte btStr in source) { pwd.AppendFormat(formatStr, btStr); }       return pwd.ToString();     }     private static byte[] FormatByte(this string strVal, Encoding encoding)     {       return encoding.GetBytes(strVal.Base64().Substring(0, 16).ToUpper());     }     ///      /// HashAlgorithm 加密統(tǒng)一方法     ///      private static string HashAlgorithmBase(HashAlgorithm hashAlgorithmObj, string source, Encoding encoding)     {       byte[] btStr = encoding.GetBytes(source);       byte[] hashStr = hashAlgorithmObj.ComputeHash(btStr);       return hashStr.Bytes2Str();     }     #endregion   } }

Program.cs代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
  class Program
  {
    static void Main(string[] args)
    {

      string plainText = "這是一條被和諧的消息!";
      //加密明文,獲得密文
      string EncryptText= Utils.PassWordHelper.Rsa(plainText);
      Console.WriteLine(EncryptText);

      //解密密文,獲得明文
      string DecryptText = Utils.PassWordHelper.UnRsa(EncryptText);
      Console.WriteLine(DecryptText);
      Console.ReadKey();

    }
  }
}

運(yùn)行結(jié)果如圖:


如何在.NET中使用RSA進(jìn)行加密解密

關(guān)于如何在.NET中使用RSA進(jìn)行加密解密就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


當(dāng)前名稱:如何在.NET中使用RSA進(jìn)行加密解密-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/idcjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部