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();
            }    
        }
    }
  • 相关阅读:
    Photoshop制作倒影的两种方法
    用CSS正确显示人民币符号的HTML转义字符
    CSS水平居中/垂直居中的N个方法
    有利于SEO的DIV+CSS的命名规则
    引用视频全屏播放代码
    分享:PHP获取MAC地址的实现代码
    设置nginx禁止通过IP访问服务器的方法
    php文件上传的例子
    apache开启gzip的方法
    perl命令批量替换文件内容
  • 原文地址:https://www.cnblogs.com/shihao/p/2511195.html
Copyright © 2011-2022 走看看