我必須加密/解密Xml文件中的一些敏感信息嗎? 是的,我可以通過編寫我自己的自定義算法來做到這一點。我想知道是否已經建立在.NET中的內置方式來做到這一點,以及我總是需要注意什麼點。如何在.NET中加密字符串?
13
A
回答
24
這裏有一對夫婦使用.NET框架功能進行加密和解密的字符串:
public string EncryptString(string plainText)
{
// Instantiate a new RijndaelManaged object to perform string symmetric encryption
RijndaelManaged rijndaelCipher = new RijndaelManaged();
// Set key and IV
rijndaelCipher.Key = Convert.FromBase64String("ABC");
rijndaelCipher.IV = Convert.FromBase64String("123");
// Instantiate a new MemoryStream object to contain the encrypted bytes
MemoryStream memoryStream = new MemoryStream();
// Instantiate a new encryptor from our RijndaelManaged object
ICryptoTransform rijndaelEncryptor = rijndaelCipher.CreateEncryptor();
// Instantiate a new CryptoStream object to process the data and write it to the
// memory stream
CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelEncryptor, CryptoStreamMode.Write);
// Convert the plainText string into a byte array
byte[] plainBytes = Encoding.ASCII.GetBytes(plainText);
// Encrypt the input plaintext string
cryptoStream.Write(plainBytes, 0, plainBytes.Length);
// Complete the encryption process
cryptoStream.FlushFinalBlock();
// Convert the encrypted data from a MemoryStream to a byte array
byte[] cipherBytes = memoryStream.ToArray();
// Close both the MemoryStream and the CryptoStream
memoryStream.Close();
cryptoStream.Close();
// Convert the encrypted byte array to a base64 encoded string
string cipherText = Convert.ToBase64String(cipherBytes, 0, cipherBytes.Length);
// Return the encrypted data as a string
return cipherText;
}
public string DecryptString(string cipherText)
{
// Instantiate a new RijndaelManaged object to perform string symmetric encryption
RijndaelManaged rijndaelCipher = new RijndaelManaged();
// Set key and IV
rijndaelCipher.Key = Convert.FromBase64String("ABC");
rijndaelCipher.IV = Convert.FromBase64String("123");
// Instantiate a new MemoryStream object to contain the encrypted bytes
MemoryStream memoryStream = new MemoryStream();
// Instantiate a new encryptor from our RijndaelManaged object
ICryptoTransform rijndaelDecryptor = rijndaelCipher.CreateDecryptor();
// Instantiate a new CryptoStream object to process the data and write it to the
// memory stream
CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelDecryptor, CryptoStreamMode.Write);
// Will contain decrypted plaintext
string plainText = String.Empty;
try
{
// Convert the ciphertext string into a byte array
byte[] cipherBytes = Convert.FromBase64String(cipherText);
// Decrypt the input ciphertext string
cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);
// Complete the decryption process
cryptoStream.FlushFinalBlock();
// Convert the decrypted data from a MemoryStream to a byte array
byte[] plainBytes = memoryStream.ToArray();
// Convert the encrypted byte array to a base64 encoded string
plainText = Encoding.ASCII.GetString(plainBytes, 0, plainBytes.Length);
}
finally
{
// Close both the MemoryStream and the CryptoStream
memoryStream.Close();
cryptoStream.Close();
}
// Return the encrypted data as a string
return plainText;
}
當然我不建議硬編碼像這樣:)
10
您可能會想要潛入System.Security.Cryptography
命名空間。我猜想MSDN上的文章Cryptography Overview,Encrypting Data和Decrypting Data可能是不錯的首發。
相關問題
- 1. 如何解密.net加密的字符串在php
- 2. decrpyt .Net iOS中的加密字符串
- 3. 如何在c#中加密字符串?
- 4. 如何在AES加密中加密/解密多個字符串?
- 5. 如何加密字符串
- 6. 在Python中解密使用.NET加密的字符串
- 7. 使用.NET核心加密字符串
- 8. 如何解密在Delphi中加密的C#中的字符串
- 9. 如何在android中使用特殊字符加密字符串?
- 10. 如何在Java客戶端使用apache.commons.codec Base64解密字符串(用.NET加密)?
- 11. 如何在iOS中解密DES加密字符串?
- 12. 如何在c sharp中解密「用java加密的字符串」?
- 13. 如何完成在android中加密和解密字符串值?
- 14. 如何在C#中對字符串進行加密和解密#
- 15. 如何在Java中解密sha1加密的字符串
- 16. 如何解密,然後在python 2.7中加密THAT字符串?
- 17. 在.NET中加密一個字符串並在PHP中解密它?
- 18. 在.NET和Javascript中的簡單字符串加密
- 19. 如何在已知加密和未加密字符串的情況下解密XML文件中的字符串
- 20. 解密字符串加密
- 21. 加密/解密字符串
- 22. 加密字符串
- 23. 加密字符串
- 24. 字符串加密
- 25. 如何使用密鑰字符串解密SHA-256加密的字符串?
- 26. AES加密 - 如何以後解密加密的字符串?
- 27. 如何在使用JS加密技術加密的Java字符串中解密
- 28. 如何在.NET中翻譯字符串
- 29. 如何使用InstallScript加密字符串
- 30. 如何加密Sql連接字符串?
密鑰和初始化向量「 ABC「&」123「對於Base-64字符數組無效。 – JeffO 2010-02-08 18:34:53
它只是爲了說明,但公平點;) – Cocowalla 2010-02-24 03:54:27
只是爲了增加其他訪客的價值 - 鑰匙和IV的長度可以是24個字符。例如:「keJhDo9YvJsp01j4JUdVuE ==」 – 2013-03-12 13:07:02