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

C#自定義RSA加密解密及RSA簽名和驗(yàn)證類實(shí)例

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

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

這個(gè)C#類自定義RSA加密解密及RSA簽名和驗(yàn)證,包含了RSA加密、解密及簽名所需的相關(guān)函數(shù),帶有詳細(xì)的注釋說明。

using System; 
using System.Text; 
using System.Security.Cryptography;
namespace DotNet.Utilities
{ 
 /// <summary> 
 /// RSA加密解密及RSA簽名和驗(yàn)證
 /// </summary> 
 public class RSACryption 
 {   
  public RSACryption() 
  {    
  } 
  
  #region RSA 加密解密 
  #region RSA 的密鑰產(chǎn)生 
 
  /// <summary>
  /// RSA 的密鑰產(chǎn)生 產(chǎn)生私鑰 和公鑰 
  /// </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的加密函數(shù) 
  //############################################################################## 
  //RSA 方式加密 
  //說明KEY必須是XML的行式,返回的是字符串 
  //在有一點(diǎn)需要說明?。≡摷用芊绞接?長度 限制的??! 
  //############################################################################## 
  //RSA的加密函數(shù) 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的加密函數(shù) 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的解密函數(shù) 
  //RSA的解密函數(shù) 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的解密函數(shù) 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數(shù)字簽名 
  #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); 
    //設(shè)置簽名的算法為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); 
    //設(shè)置簽名的算法為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); 
    //設(shè)置簽名的算法為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); 
    //設(shè)置簽名的算法為MD5 
    RSAFormatter.SetHashAlgorithm("MD5"); 
    //執(zhí)行簽名 
    EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature); 
    m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData); 
    return true; 
   
  } 
  #endregion 
  #region RSA 簽名驗(yàn)證 
  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); 
    //指定解密的時(shí)候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); 
    //指定解密的時(shí)候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); 
    //指定解密的時(shí)候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); 
    //指定解密的時(shí)候HASH算法為MD5 
    RSADeformatter.SetHashAlgorithm("MD5"); 
    DeformatterData =Convert.FromBase64String(p_strDeformatterData); 
    if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
   
  } 

  #endregion 

  #endregion 
 } 
}

希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C# Nullable的使用小結(jié)

    C# Nullable的使用小結(jié)

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

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

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

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

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

    C#難點(diǎn)逐個(gè)擊破(6):C#數(shù)據(jù)類型與.net framework數(shù)據(jù)類型

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

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

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

    C#視頻轉(zhuǎn)換類分享

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

    C#中word導(dǎo)出功能的騷操作詳解

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

    Unity實(shí)現(xiàn)OCR文字識(shí)別功能

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

    C#實(shí)現(xiàn)XOR密碼(異或密碼)的示例代碼

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

    C#/VB.NET實(shí)現(xiàn)將XML轉(zhuǎn)為PDF

    可擴(kuò)展標(biāo)記語言(XML)文件是一種標(biāo)準(zhǔn)的文本文件,它使用特定的標(biāo)記來描述文檔的結(jié)構(gòu)以及其他特性。本文將利用C#實(shí)現(xiàn)XML文件轉(zhuǎn)PDF?,需要的可以參考一下
    2022-03-03

最新評論

湘潭市| 平潭县| 饶平县| 陈巴尔虎旗| 汾西县| 宜君县| 密云县| 娱乐| 连云港市| 德清县| 五原县| 略阳县| 宜君县| 汶上县| 句容市| 普兰县| 浦县| 罗山县| 中牟县| 珲春市| 双城市| 咸阳市| 通许县| 都匀市| 闵行区| 赫章县| 介休市| 紫金县| 庆阳市| 宜春市| 定日县| 宁波市| 临桂县| 宝鸡市| 临城县| 莱州市| 中卫市| 旌德县| 珠海市| 靖西县| 同心县|