所以我加密使用.NET DESCryptoServiceProviderDESCryptoServiceProvider .net和限制加密字符集
一个字符串是可以限制的字符集加密的字符串,以便它不包含特定字符范围?
例如/或\?
所以我加密使用.NET DESCryptoServiceProviderDESCryptoServiceProvider .net和限制加密字符集
一个字符串是可以限制的字符集加密的字符串,以便它不包含特定字符范围?
例如/或\?
不,但您可以将其编码为base64编码。所以它不会包含任何非文本字符。
byte[] encryptedStream = ..
string encryptedString = Convert.ToBase64String(encryptedStream);
想要从纯文本字符串转换为加密字符串吗?如果是这样,请使用支持全范围Unicode的编码将明文转换为二进制数据,使用base64将加密二进制转换为“安全”加密文本。
所以管道的步骤是:
加密
转换明文(字符串)来明文(字节) - 例如
byte[] plainBinary = Encoding.UTF8.GetBytes(plainText);
以正常的方式与加密DESCryptoServiceProvider
(plainBinary
到encryptedBinary
)
转换加密二进制到加密文本:
string encryptedText = Convert.ToBase64String(encryptedBinary);
解密:
转换加密文本到加密二进制:
byte[] encryptedBinary = Convert.FromBase64String(encryptedText);
解密以正常方式(encryptedBinary
到plainBinary
)
转换纯二进制为纯文本:
string plainText = Encoding.UTF8.GetString(plainBinary);
另外,你可以点e使用StreamWriter
(用于文本到二进制转换),CryptoStream
(用于DES加密)和ToBase64Transform
仅在最后留下加密和base64编码数据的转换(例如使用)的数据。然后,您可以使用FromBase64Transform
来改变流程。
如果base64不足以对所创建的字符进行限制,则可以始终编写自己的base64类转换 - 任何需要任意字节并生成可以解码回这些字节的文本的东西,只使用允许的字符,应该没问题。