所以我加密使用.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類轉換 - 任何需要任意字節並生成可以解碼回這些字節的文本的東西,只使用允許的字符,應該沒問題。