• AsymmetricAlgorithmEncryptor.cs


    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;

    namespace APress.DotNetSecurity.Chapter2.AsymmetricAlgorithmEncryptor
    {
     class AsymmetricAlgorithmEncryptorTester
     {
      static void Main(string[] args)
      {
       try
       {
        String adPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
        Console.WriteLine("Creating the random data file information...");
        RandomNumberGenerator rng = new RNGCryptoServiceProvider();
        byte[] randomBytes = new byte[1000];
        rng.GetNonZeroBytes(randomBytes);

        FileStream fCreate = new FileStream(adPath + @"\randomData.dat",
         FileMode.Create, FileAccess.Write);

        Console.WriteLine("Writing the random data to the file " +
         adPath + @"\randomData.dat...");
        fCreate.Write(randomBytes, 0, (int)randomBytes.Length);
        fCreate.Close();

        FileStream fin = new FileStream(adPath + @"\randomData.dat",
         FileMode.Open, FileAccess.Read);
        FileStream fdec = new FileStream(adPath + @"\randomDataOut.dat",
         FileMode.OpenOrCreate, FileAccess.Write);

        //  Read in the file data.
        RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)RSA.Create();
        int len = 0, readBytes = 0, dataSize = 0;
        
        if(1024 == rsa.KeySize)
        {
         dataSize = 16;
        }
        else
        {
         dataSize = 5;
        }

        Console.WriteLine("Data length is " + dataSize.ToString());

        byte[] finData = new byte[dataSize], rsaEncrypt = null,
         rsaDecrypt = null;

        Console.WriteLine("Encrypting the data and decrypting the data to " +
         adPath + @"\randomDataOut.dat...");

        while(readBytes < fin.Length)
        {
         len = fin.Read(finData, 0, dataSize);
         readBytes += len;
         //  Encrypt the data.
         rsaEncrypt = rsa.Encrypt(finData, false);
         //  Decrypt the data.
         rsaDecrypt = rsa.Decrypt(rsaEncrypt, false);
         fdec.Write(rsaDecrypt, 0, (int)rsaDecrypt.Length);
        }
        fdec.Close();
       }
       catch(CryptographicUnexpectedOperationException cuoe)
       {
        Console.WriteLine("CryptographicUnexpectedOperationException:  "
         + cuoe.Message);
        Console.WriteLine(cuoe.StackTrace);
       }
       catch(CryptographicException ce)
       {
        Console.WriteLine("CryptographicException:  " + ce.Message);
        Console.WriteLine(ce.StackTrace);
       }
       catch(Exception ge)
       {
        Console.WriteLine("Exception:  " + ge.GetType().Name + " " + ge.Message);
        Console.WriteLine(ge.StackTrace);
       }
       finally
       {
        Console.WriteLine("Press the return key to continue...");
        Console.Read();
       }
      }
      private static String ArrayToHexString(byte[] ByteData)
      {
       StringBuilder retVal = new StringBuilder();
       
       foreach(byte b in ByteData)
       {
        retVal.Append(b);
        retVal.Append(" ");
       }
       retVal.Remove(retVal.Length - 1, 1);

       return retVal.ToString();
      } 
     }
    }

  • 相关阅读:
    元素对应赋值与列表生成器
    python装饰器
    python之闭包
    内置函数,重要的四个reduce,map,lambda,filter
    高阶函数,递归函数,内置函数
    函数作用域
    python函数
    集合
    python深浅拷贝以及数据在内存中储存方法
    Linux之ubuntu系统操作学习笔记
  • 原文地址:https://www.cnblogs.com/dushu/p/2511215.html
Copyright © 2020-2023  润新知