2009-02-15 44 views

回答

1

不,但您可以將其編碼爲base64編碼。所以它不會包含任何非文本字符。

byte[] encryptedStream = .. 
string encryptedString = Convert.ToBase64String(encryptedStream); 
2

想要從純文本字符串轉換爲加密字符串嗎?如果是這樣,請使用支持全範圍Unicode的編碼將明文轉換爲二進制數據,使用base64將加密二進制轉換爲「安全」加密文本。

所以管道的步驟是:

加密

  • 轉換明文(字符串)來明文(字節) - 例如

    byte[] plainBinary = Encoding.UTF8.GetBytes(plainText); 
    
  • 以正常的方式與加密DESCryptoServiceProviderplainBinaryencryptedBinary

  • 轉換加密二進制到加密文本:

    string encryptedText = Convert.ToBase64String(encryptedBinary); 
    

解密:

  • 轉換加密文本到加密二進制:

    byte[] encryptedBinary = Convert.FromBase64String(encryptedText); 
    
  • 解密以正常方式(encryptedBinaryplainBinary

  • 轉換純二進制爲純文本:

    string plainText = Encoding.UTF8.GetString(plainBinary); 
    

另外,你可以點e使用StreamWriter(用於文本到二進制轉換),CryptoStream(用於DES加密)和ToBase64Transform僅在最後留下加密和base64編碼數據的轉換(例如使用)的數據。然後,您可以使用FromBase64Transform來改變流程。

如果base64不足以對所創建的字符進行限制,則可以始終編寫自己的base64類轉換 - 任何需要任意字節並生成可以解碼回這些字節的文本的東西,只使用允許的字符,應該沒問題。