純AES、RSAの暗号化と復号化

     

           2019だから、元に戻すを残し、その後、全体を通過したものが多いかのように、完成した後、多くの後悔、把握2020それの毎日が忙しいことを、あなたは2020年に特しないことを望むがある、基盤、学習、技術革新、記録要約、人生は先に見て前進しなければなりません。さらに重要なことは、プロセスの結果は重要であり、我々は、これらの理由はどのように給与Nの年なしの後に、前に懸命に仕事をどのように考えるようにしたくない、機会が人々を準備することで、常に感じたこの文は、問題は、私はいつも、そこにあります再度行く準備ができている、あなたがたは、ちょうど私が十分に懸命に十分な進捗聖歌をしようとしていなかったことを証明する機会を与えることはありません。あなたの人生は、長いテスト運転免許証である少女に来てまだ、良くない給料の増加ではなく、完全な財布、まだ少ない世界を一周する、ない結婚ガールフレンド、食べ物を食べない     、花はまだ詠唱また、あなたが持っているもの、家を買う、車を買う、まだ、行われていないので、多くの事しません

 

 

 

 公立と同じ色の代わりに秘密鍵が、この数字は、証明書の四組に関連し、対光緑淡いピンクのブロックは、独自の証明書、設定淡黄色青色光第三者認証を。

RSA暗号化

    /// <summary>
        /// RSA 公钥加密
        /// </summary>
        /// <param name="xmlPublicteKey">公钥</param>
        /// <param name="encryptKey">随机生成的Key</param>
        /// <returns></returns>
        public static string RSAEncryptByPublicteKey( string encryptKey)
        {
            RSACryptoServiceProvider publicRsa = new RSACryptoServiceProvider();
            publicRsa.FromXmlString(xmlPublicteKey);
            RSAParameters rp = publicRsa.ExportParameters(false);

            //转换密钥
            AsymmetricKeyParameter pbk = DotNetUtilities.GetRsaPublicKey(rp);
            IBufferedCipher c = CipherUtilities.GetCipher("RSA/ECB/NoPadding");// 参数与Java中加密解密的参数一致     //RSA/ECB/PKCS1Padding
            //第一个参数为true表示加密,为false表示解密;第二个参数表示密钥
            c.Init(true, pbk); //keyPair.Private

            byte[] DataToEncrypt = Encoding.UTF8.GetBytes(encryptKey);
            byte[] outBytes = c.DoFinal(DataToEncrypt);//加密
            string strBase64 = Convert.ToBase64String(outBytes);

            return strBase64;
        }
View Code

RSA解密

 /// <summary>
        /// 私钥解密
        /// </summary>
        /// <param name="xmlPrivateKey"></param>
        /// <param name="encryptKey"></param>
        /// <returns></returns> 
        public static string RSAEncryptByPrivateKey( string encryptKey)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.FromXmlString(xmlPrivateKey);
            RSAParameters rp = rsa.ExportParameters(true);

            //转换密钥
            AsymmetricCipherKeyPair pbk = DotNetUtilities.GetRsaKeyPair(rp);
            IBufferedCipher c = CipherUtilities.GetCipher("RSA/ECB/NoPadding");// 参数与Java中加密解密的参数一致     
            //RSA/ECB/PKCS1Padding
            //第一个参数为true表示加密,为false表示解密;第二个参数表示密钥
            c.Init(false, pbk.Private); //keyPair.Private

            byte[] PlainTextBArray = Convert.FromBase64String(encryptKey);
            byte[] outBytes = c.DoFinal(PlainTextBArray);//加密
            string outresp = System.Text.UTF8Encoding.UTF8.GetString(outBytes);

            return outresp;
        }
View Code

AES加密

   /// <summary>
        /// AES加密 
        /// </summary>
        /// <param name="text">加密字符</param>
        /// <param name="password">加密的密码</param>
        /// <returns></returns>
        public static string AESEncrypt(string text, string password)
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.ECB;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(password);
            byte[] keyBytes = new byte[16];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length) len = keyBytes.Length;
            System.Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            byte[] ivBytes = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("0102030405060708");
            rijndaelCipher.IV = new byte[16];
            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
            byte[] plainText = Encoding.UTF8.GetBytes(text);
            byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);
            return Convert.ToBase64String(cipherBytes);

        }
View Code

AES解密

   /// <summary>
        /// AES解密
        /// </summary>
        /// <param name="text"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string AESDecrypt(string text, string password)
        {

            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.ECB;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(password);
            byte[] keyBytes = new byte[16];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length) len = keyBytes.Length;
            System.Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            byte[] ivBytes = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("0102030405060708");
            rijndaelCipher.IV = new byte[16];
            ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
            //byte[] plainText = Encoding.UTF8.GetBytes(text);
            byte[] plainText = Convert.FromBase64String(text);
            byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);
            return Encoding.UTF8.GetString(cipherBytes);

        }
View Code

おすすめ

転載: www.cnblogs.com/BabyRui/p/12168171.html