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();
            }    
        }
    }
  • 相关阅读:
    TypeScript 第一讲 ———— 基本数据类型的使用
    关于TypeScript命名空间
    Egret 自定义皮肤 ———— 引入类中以及createChildren()和 childrenCreated()的使用
    egret基础——控件
    回顾过去,展望未来
    JDBC、Hibernate、Mybatis之间的区别
    SSM框架优缺点和spring boot 比起优缺点是什么?
    拦截器和过滤器的区别
    转发和重定向区别
    关于虚拟机中克隆的linux为什么不能开启网络服务
  • 原文地址:https://www.cnblogs.com/shihao/p/2511195.html
Copyright © 2011-2022 走看看