最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年03月26日 09:36:57   作者:feige  
這篇文章主要介紹了C#自定義RSA加密解密及RSA簽名和驗證類,實例分析了C#實現RSA加密解密及RSA簽名和驗證的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了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"); 
    //執(zhí)行簽名 
    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"); 
    //執(zhí)行簽名 
    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"); 
    //執(zhí)行簽名 
    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"); 
    //執(zhí)行簽名 
    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#程序設計有所幫助。

相關文章

  • C# Nullable的使用小結

    C# Nullable的使用小結

    本文主要介紹了C# Nullable的使用小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • c#委托詳解和和示例分享

    c#委托詳解和和示例分享

    這篇文章詳細探討了C#中的委托,列舉其主要的實現方式,并分析其在設計層面和編碼層面帶來的好處,最后會討論其安全性和執(zhí)行效率等,當然還有實現示例
    2014-03-03
  • C#難點逐個擊破(6):C#數據類型與.net framework數據類型

    C#難點逐個擊破(6):C#數據類型與.net framework數據類型

    最近開始看Illustrator C#2008,這真是一本好書,我讀計算機書籍這么多了,能讓我稱為好書的沒有多少。
    2010-02-02
  • C#與C++枚舉的區(qū)別對比和使用案例

    C#與C++枚舉的區(qū)別對比和使用案例

    本文詳細講解了C#與C++枚舉的區(qū)別對比和使用案例,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#視頻轉換類分享

    C#視頻轉換類分享

    這篇文章主要為大家分享了C#視頻轉換類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#中word導出功能的騷操作詳解

    C#中word導出功能的騷操作詳解

    這篇文章主要給大家介紹了關于C#中word導出功能騷操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Unity實現OCR文字識別功能

    Unity實現OCR文字識別功能

    這篇文章主要介紹了通過Unity接入百度AI接口,實現OCR文字識別功能,文中的實現步驟講解詳細,對我們學習或工作有一定的參考價值,需要的可以了解一下
    2022-01-01
  • C#實現XOR密碼(異或密碼)的示例代碼

    C#實現XOR密碼(異或密碼)的示例代碼

    XOR密碼(異或密碼)是一種簡單的加密算法,它使用異或(XOR)操作來對明文和密鑰進行加密和解密,本文為大家介紹了C#實現XOR密碼的相關知識,希望對大家有所幫助
    2024-01-01
  • C#/VB.NET實現將XML轉為PDF

    C#/VB.NET實現將XML轉為PDF

    可擴展標記語言(XML)文件是一種標準的文本文件,它使用特定的標記來描述文檔的結構以及其他特性。本文將利用C#實現XML文件轉PDF?,需要的可以參考一下
    2022-03-03

最新評論

崇文区| 托克逊县| 胶州市| 九江县| 南通市| 吴忠市| 郸城县| 东宁县| 铜梁县| 长沙市| 观塘区| 娱乐| 当阳市| 会理县| 虹口区| 临汾市| 北碚区| 姚安县| 济南市| 南岸区| 彰武县| 石台县| 阿克苏市| 泗阳县| 南漳县| 大悟县| 广宁县| 绥宁县| 新干县| 河南省| 无锡市| 宜君县| 吉隆县| 满洲里市| 黄龙县| 南投市| 信阳市| 兴隆县| 永城市| 湘潭市| 江津市|