zoukankan      html  css  js  c++  java
  • C#中RSA的简单使用

            static void Main(string[] args)
            {
                try
                {
                    //创建一个编码实例用来将字符串转换成byte数组
                    UnicodeEncoding ByteConverter = new UnicodeEncoding();
    
                    //Create byte arrays to hold original, encrypted, and decrypted data.
                    byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt");
                    byte[] encryptedData;
                    byte[] decryptedData;
                    using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
                    {
                        encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false);
                        decryptedData = RSADecrypt(encryptedData, RSA.ExportParameters(true), false);
                        Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData));
                    }
                }
                catch (ArgumentNullException)
                {
                    Console.WriteLine("Encryption failed.");
    
                }
                Console.Read();
            }
    
            static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
            {
                try
                {
                    byte[] encryptedData;
                    //创建一个RSACryptoServiceProvider实例.
                    using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
                    {
    
                        //指定共有钥匙
                        RSA.ImportParameters(RSAKeyInfo);
                        //加密,并且指定是否运行在XP更高的版本中
                        encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
                    }
                    return encryptedData;
                }
                catch (CryptographicException e)
                {
                    Console.WriteLine(e.Message);
    
                    return null;
                }
    
            }
    
            static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
            {
                try
                {
                    byte[] decryptedData;
                    using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
                    {
                        RSA.ImportParameters(RSAKeyInfo);
                        decryptedData = RSA.Decrypt(DataToDecrypt, DoOAEPPadding);
                    }
                    return decryptedData;
                }
                //Catch and display a CryptographicException  
                //to the console.
                catch (CryptographicException e)
                {
                    Console.WriteLine(e.ToString());
    
                    return null;
                }
    
            }

    Hold on, everything is possible.
  • 相关阅读:
    求两条链表有无交点和第一个交点
    重载自增运算符(前置自增++p和后置自增p++)
    二叉排序树和平衡二叉树
    红黑树
    java学习攻略
    Intellij IDEA / IntelliJ
    ngrinder test
    eclipsejeekeplerSR2win32x86_64 jsonedit plugin
    向叶子文文的.net之路学习(大量的转载)
    微软发布机制(转)从浅入深
  • 原文地址:https://www.cnblogs.com/student-note/p/6866561.html
Copyright © 2011-2022 走看看