2009-02-15 59 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类转换 - 任何需要任意字节并生成可以解码回这些字节的文本的东西,只使用允许的字符,应该没问题。