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();
}
}
}
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();
}
}
}