2009-07-29 106 views

回答

5

加密(由.NET框架/ BCL提供,而不是C#語言)通常對字節起作用。但這很好;數字很​​容易表示爲字節,輸出字節可以通過Convert.ToBase64String以字符串的形式寫入。

因此, 「所有的人,間接」 ......

System.Security.Cryptography on MSDN

(再解密:一個加密進行解密;一個哈希不能(希望);所以只要你不看的散列函數,你應該罰款)

+0

感謝Marc,我只是想提到C#不會執行加密。 – 2009-07-29 13:53:00

5

System.Security.Cryptography -

System.Security.Cryptography命名空間提供加密服務,包括數據的安全編碼和解碼以及許多其他操作,如散列,隨機數生成和消息認證。

Example Walkthrough演示如何加密和解密內容。

1

我首先查看Cryptography命名空間。你可以實現你自己的解密/加密字符串函數。 Here就是一個很好的例子。

3

不管你做什麼,都不要滾動你自己的加密算法。命名空間將包含您需要的所有內容:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Security.Cryptography; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      String secret = "Zomg!"; 
      byte[] secretBytes = ASCIIEncoding.ASCII.GetBytes(secret); 

      // One-way hashing 
      String hashedSecret = 
       BitConverter.ToString(
        SHA512Managed.Create().ComputeHash(secretBytes) 
       ); 

      // Encryption using symmetric key 
      Rijndael rijndael = RijndaelManaged.Create(); 
      ICryptoTransform rijEncryptor = rijndael.CreateEncryptor(); 
      ICryptoTransform rijDecryptor = rijndael.CreateDecryptor(); 
      byte[] rijndaelEncrypted = rijEncryptor.TransformFinalBlock(secretBytes, 0, secretBytes.Length); 
      String rijndaelDecrypted = 
       ASCIIEncoding.ASCII.GetString(
        rijDecryptor.TransformFinalBlock(rijndaelEncrypted, 0, rijndaelEncrypted.Length) 
       ); 

      // Encryption using asymmetric key 
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
      string rsaParams = rsa.ToXmlString(true); // you can store the public key in a config file 
                 // which allows you to recreate the file later 

      byte[] rsaEncrypted = rsa.Encrypt(secretBytes, false); 
      String decrypted = 
       ASCIIEncoding.ASCII.GetString(
        rsa.Decrypt(rsaEncrypted, false) 
       ); 

      // Signing data using the rsaEncryptor we just created 
      byte[] signedData = rsa.SignData(secretBytes, new SHA1CryptoServiceProvider()); 
      bool verifiedData = rsa.VerifyData(secretBytes, new SHA1CryptoServiceProvider(), signedData); 
     } 
    } 
}