C#中给密码加密例子和命名空间

解决方案 »

  1.   

    System.Security.Cryptography该命名空间下提供了大部分的加密算法。示例方法使用带有指定的 Key 和初始化向量(IV)的 DESCryptoServiceProvider(DES 的实现)来加密由 inName 指定的文件,并将加密的结果输出到由 outName 指定的文件。
    [Visual Basic] 
    Private Shared Sub EncryptData(inName As String, outName As String, _
    desKey() As Byte, desIV() As Byte)    'Create the file streams to handle the input and output files.
        Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read)
        Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _
           FileAccess.Write)
        fout.SetLength(0)
        
        'Create variables to help with read and write.
        Dim bin(4096) As Byte 'This is intermediate storage for the encryption.
        Dim rdlen As Long = 0 'This is the total number of bytes written.
        Dim totlen As Long = fin.Length 'Total length of the input file.
        Dim len As Integer 'This is the number of bytes to be written at a time.
        Dim des As New DESCryptoServiceProvider()
        Dim encStream As New CryptoStream(fout, _
           des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write)
        
        Console.WriteLine("Encrypting...")
        
        'Read from the input file, then encrypt and write to the output file.
        While rdlen < totlen
            len = fin.Read(bin, 0, 4096)
            encStream.Write(bin, 0, len)
            rdlen = Convert.ToInt32(rdlen + len / des.BlockSize * des.BlockSize)
            Console.WriteLine("Processed {0} bytes, {1} bytes total", len, _
               rdlen)
        End While
        
        encStream.Close()
    End Sub
    [C#] 
    private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)
     {    
         //Create the file streams to handle the input and output files.
         FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
         FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
         fout.SetLength(0);
           
         //Create variables to help with read and write.
         byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
         long rdlen = 0;              //This is the total number of bytes written.
         long totlen = fin.Length;    //This is the total length of the input file.
         int len;                     //This is the number of bytes to be written at a time.
     
         DES des = new DESCryptoServiceProvider();          
         CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);
                    
         Console.WriteLine("Encrypting...");
     
         //Read from the input file, then encrypt and write to the output file.
         while(rdlen < totlen)
         {
             len = fin.Read(bin, 0, 100);
             encStream.Write(bin, 0, len);
             rdlen = rdlen + len;
             Console.WriteLine("{0} bytes processed", rdlen);
         }
     
         encStream.Close();  
         fout.Close();
         fin.Close();                   
     }