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

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

    namespace APress.DotNetSecurity.Chapter2.PDBSample
    {
     class PDBSampleTester
     {
      static void Main(string[] args)
      {
       try
       {
        Console.WriteLine("Creating the salt...");
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
        byte[] rngData = new byte[8];
        rng.GetBytes(rngData);
        Console.WriteLine("Salt value is " + ArrayToHexString(rngData));

        PasswordDeriveBytes pwdDerive = new PasswordDeriveBytes("SuperSecretPassword",
         rngData);

        Console.WriteLine("Creating the IV...");
        byte[] ivData = new byte[8];
        rng.GetBytes(ivData);
        Console.WriteLine("IV value is " + ArrayToHexString(ivData));

        Console.WriteLine("Deriving the RC2 key...");
        RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();
        byte[] RC2Key =
         pwdDerive.CryptDeriveKey("RC2", "SHA", 128, ivData);

        rc2.Key = RC2Key;
        Console.WriteLine("Key value is " + ArrayToHexString(rc2.Key));
       }
       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.ToString("X2"));
        retVal.Append(" ");
       }
       retVal.Remove(retVal.Length - 1, 1);

       return retVal.ToString();
      } 
     }
    }

  • 相关阅读:
    Oracle约束详解
    查看oracle数据库中表是否被锁
    Oracle安装EMCC
    Hbuilder和夜神模拟器的使用
    Python3 进制表示、进制转换
    Python3制作图片缩略图
    flask 异步接口
    git——一段代码将本地的代码提交至远程
    centos7防火墙放开某一端口
    CentOS7安装docker
  • 原文地址:https://www.cnblogs.com/dushu/p/2511961.html
Copyright © 2011-2022 走看看