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.
  • 相关阅读:
    tcp/ip ---IP路由选择
    tcp/ip --IP:网际协议
    tcp/ip ---以太网和IEEE 802封装
    tcp/ip ---链路层
    internet与Internet的区别
    TCP/IP ---封装与分用
    TCP/IP ---互联网的地址
    SpringMvc 系统启动时加载数据到内存中
    hadoop-17-hive数据库元数据查看
    hadoop-16-sqoop导入oracle数据
  • 原文地址:https://www.cnblogs.com/student-note/p/6866561.html
Copyright © 2011-2022 走看看