国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#自定義RSA加密解密及RSA簽名和驗證類實例

2020-01-24 02:05:56
字體:
來源:轉載
供稿:網友

本文實例講述了C#自定義RSA加密解密及RSA簽名和驗證類。分享給大家供大家參考。具體分析如下:

這個C#類自定義RSA加密解密及RSA簽名和驗證,包含了RSA加密、解密及簽名所需的相關函數,帶有詳細的注釋說明。

using System; using System.Text; using System.Security.Cryptography;namespace DotNet.Utilities{  /// <summary>  /// RSA加密解密及RSA簽名和驗證 /// </summary>  public class RSACryption  {     public RSACryption()   {      }     #region RSA 加密解密   #region RSA 的密鑰產生    /// <summary>  /// RSA 的密鑰產生 產生私鑰 和公鑰   /// </summary>  /// <param name="xmlKeys"></param>  /// <param name="xmlPublicKey"></param>  public void RSAKey(out string xmlKeys,out string xmlPublicKey)   {        System.Security.Cryptography.RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();     xmlKeys=rsa.ToXmlString(true);     xmlPublicKey = rsa.ToXmlString(false);      }   #endregion   #region RSA的加密函數   //##############################################################################   //RSA 方式加密   //說明KEY必須是XML的行式,返回的是字符串   //在有一點需要說明!!該加密方式有 長度 限制的!!   //##############################################################################   //RSA的加密函數 string  public string RSAEncrypt(string xmlPublicKey,string m_strEncryptString )   {       byte[] PlainTextBArray;    byte[] CypherTextBArray;    string Result;    RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();    rsa.FromXmlString(xmlPublicKey);    PlainTextBArray = (new UnicodeEncoding()).GetBytes(m_strEncryptString);    CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);    Result=Convert.ToBase64String(CypherTextBArray);    return Result;      }   //RSA的加密函數 byte[]  public string RSAEncrypt(string xmlPublicKey,byte[] EncryptString )   {       byte[] CypherTextBArray;    string Result;    RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();    rsa.FromXmlString(xmlPublicKey);    CypherTextBArray = rsa.Encrypt(EncryptString, false);    Result=Convert.ToBase64String(CypherTextBArray);    return Result;      }   #endregion   #region RSA的解密函數   //RSA的解密函數 string  public string RSADecrypt(string xmlPrivateKey, string m_strDecryptString )   {      byte[] PlainTextBArray;    byte[] DypherTextBArray;    string Result;    System.Security.Cryptography.RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();    rsa.FromXmlString(xmlPrivateKey);    PlainTextBArray =Convert.FromBase64String(m_strDecryptString);    DypherTextBArray=rsa.Decrypt(PlainTextBArray, false);    Result=(new UnicodeEncoding()).GetString(DypherTextBArray);    return Result;      }   //RSA的解密函數 byte  public string RSADecrypt(string xmlPrivateKey, byte[] DecryptString )   {      byte[] DypherTextBArray;    string Result;    System.Security.Cryptography.RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();    rsa.FromXmlString(xmlPrivateKey);    DypherTextBArray=rsa.Decrypt(DecryptString, false);    Result=(new UnicodeEncoding()).GetString(DypherTextBArray);    return Result;      }   #endregion   #endregion   #region RSA數字簽名   #region 獲取Hash描述表   //獲取Hash描述表 ,sharejs.com  public bool GetHash(string m_strSource, ref byte[] HashData)   {       //從字符串中取得Hash描述    byte[] Buffer;    System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");    Buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource);    HashData = MD5.ComputeHash(Buffer);    return true;      }   //獲取Hash描述表   public bool GetHash(string m_strSource, ref string strHashData)   {       //從字符串中取得Hash描述    byte[] Buffer;    byte[] HashData;    System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");    Buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource);    HashData = MD5.ComputeHash(Buffer);    strHashData = Convert.ToBase64String(HashData);    return true;      }   //獲取Hash描述表   public bool GetHash(System.IO.FileStream objFile, ref byte[] HashData)   {       //從文件中取得Hash描述    System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");    HashData = MD5.ComputeHash(objFile);    objFile.Close();    return true;      }   //獲取Hash描述表   public bool GetHash(System.IO.FileStream objFile, ref string strHashData)   {       //從文件中取得Hash描述    byte[] HashData;    System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");    HashData = MD5.ComputeHash(objFile);    objFile.Close();    strHashData = Convert.ToBase64String(HashData);    return true;      }   #endregion   #region RSA簽名   //RSA簽名   public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref byte[] EncryptedSignatureData)   {        System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPrivate);     System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);     //設置簽名的算法為MD5     RSAFormatter.SetHashAlgorithm("MD5");     //執行簽名     EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);     return true;      }   //RSA簽名   public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref string m_strEncryptedSignatureData)   {        byte[] EncryptedSignatureData;     System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPrivate);     System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);     //設置簽名的算法為MD5     RSAFormatter.SetHashAlgorithm("MD5");     //執行簽名     EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);     m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData);     return true;      }   //RSA簽名   public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref byte[] EncryptedSignatureData)   {        byte[] HashbyteSignature;     HashbyteSignature = Convert.FromBase64String(m_strHashbyteSignature);     System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPrivate);     System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);     //設置簽名的算法為MD5     RSAFormatter.SetHashAlgorithm("MD5");     //執行簽名     EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);     return true;      }   //RSA簽名   public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref string m_strEncryptedSignatureData)   {        byte[] HashbyteSignature;     byte[] EncryptedSignatureData;     HashbyteSignature = Convert.FromBase64String(m_strHashbyteSignature);     System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPrivate);     System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);     //設置簽名的算法為MD5     RSAFormatter.SetHashAlgorithm("MD5");     //執行簽名     EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);     m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData);     return true;      }   #endregion   #region RSA 簽名驗證   public bool SignatureDeformatter(string p_strKeyPublic, byte[] HashbyteDeformatter, byte[] DeformatterData)   {        System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPublic);     System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);     //指定解密的時候HASH算法為MD5     RSADeformatter.SetHashAlgorithm("MD5");     if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData))     {      return true;     }     else     {      return false;     }      }   public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, byte[] DeformatterData)   {        byte[] HashbyteDeformatter;     HashbyteDeformatter = Convert.FromBase64String(p_strHashbyteDeformatter);     System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPublic);     System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);     //指定解密的時候HASH算法為MD5     RSADeformatter.SetHashAlgorithm("MD5");     if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData))     {      return true;     }     else     {      return false;     }      }   public bool SignatureDeformatter(string p_strKeyPublic, byte[] HashbyteDeformatter, string p_strDeformatterData)   {        byte[] DeformatterData;     System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPublic);     System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);     //指定解密的時候HASH算法為MD5     RSADeformatter.SetHashAlgorithm("MD5");     DeformatterData =Convert.FromBase64String(p_strDeformatterData);     if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData))     {      return true;     }     else     {      return false;     }      }   public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, string p_strDeformatterData)   {        byte[] DeformatterData;     byte[] HashbyteDeformatter;     HashbyteDeformatter = Convert.FromBase64String(p_strHashbyteDeformatter);     System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();     RSA.FromXmlString(p_strKeyPublic);     System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);     //指定解密的時候HASH算法為MD5     RSADeformatter.SetHashAlgorithm("MD5");     DeformatterData =Convert.FromBase64String(p_strDeformatterData);     if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData))     {      return true;     }     else     {      return false;     }      }   #endregion   #endregion  } }

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武乡县| 绥宁县| 拜城县| 图片| 揭阳市| 宁明县| 裕民县| 海口市| 临西县| 桐城市| 安丘市| 繁峙县| 奎屯市| 洮南市| 屯门区| 建瓯市| 元谋县| 宜宾县| 项城市| 盐城市| 应用必备| 休宁县| 新泰市| 台中市| 聂荣县| 永清县| 玉环县| 永州市| 高邑县| 正蓝旗| 崇文区| 台南县| 昌江| 兖州市| 平顶山市| 凌云县| 沙雅县| 吉安市| 长白| 锡林郭勒盟| 濮阳县|