zoukankan      html  css  js  c++  java
  • RNGBasics.cs

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

    namespace APress.DotNetSecurity.Chapter2.RNGBasics
    {
        class RNGBasicsTester
        {
            static void Main(string[] args)
            {
                try
                {
                    Console.WriteLine("Creating an RNG off of CSP parameters...");
                    CspParameters csp = new CspParameters(1,
                        "Microsoft Enhanced Cryptographic Provider v1.0", "Administrator");
                    RandomNumberGenerator rng = new RNGCryptoServiceProvider(csp);
                    
                    Console.WriteLine("Getting random data...");
                    byte[] randomData = new byte[18];
                    rng.GetBytes(randomData);
                    Console.WriteLine("Retrieved the following random bytes:  " +
                        ArrayToHexString(randomData));

                    Console.WriteLine("Translating the byte data to integer data...");
                    BinaryReader binReader = new BinaryReader(new MemoryStream(randomData));
                    try
                    {
                        int randomValue;
                        do
                        {
                            randomValue = binReader.ReadInt32();
                            Console.WriteLine("New random integer value:  " +
                                randomValue.ToString());
                        } while(true);
                    }
                    catch(EndOfStreamException eose)
                    {
                        Console.WriteLine("Got the expected EndOfStreamException with " +
                            "the stream.");
                    }
                }
                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();
            }    
        }
    }
  • 相关阅读:
    对Promise的理解?
    对JavaScript垃圾回收机制的理解?
    说明split()与join()函数的区别?
    目标检测评估标准
    训练自己的数据集
    ssd_mobilenet_demo
    c++读取数据
    0XFF
    python读取数据
    快速排序
  • 原文地址:https://www.cnblogs.com/shihao/p/2511195.html
Copyright © 2011-2022 走看看