中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

C#自定義RSA加密解密及RSA簽名和驗(yàn)證封裝類

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

這個(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
 
    }
} 

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Mysql存儲(chǔ)過程代碼例子

下一篇:jQuery多選框的全選、全不選、反選