DESCryptoServiceProvider.net并限制加密字符集

DESCryptoServiceProvider.net并限制加密字符集,.net,encryption,.net,Encryption,因此,我正在使用.net DecryptoServiceProvider加密字符串 是否可以限制加密字符串的字符集,使其不包含特定的字符范围 例如/或\?否,但您可以使用编码对其进行编码。所以它不会包含任何非文本字符 byte[] encryptedStream = .. string encryptedString = Convert.ToBase64String(encryptedStream ); 您想从纯文本字符串转换为加密字符串吗?如果是这样,请使用支持全范围Unicode的编码将明

因此,我正在使用.net DecryptoServiceProvider加密字符串

是否可以限制加密字符串的字符集,使其不包含特定的字符范围


例如/或\?

否,但您可以使用编码对其进行编码。所以它不会包含任何非文本字符

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

您想从纯文本字符串转换为加密字符串吗?如果是这样,请使用支持全范围Unicode的编码将明文数据转换为二进制数据,并使用base64将加密二进制数据转换为“安全”加密文本

因此,管道的步骤是:

加密

  • 将明文(字符串)转换为明文(字节)-例如

  • 使用
    DESCryptoServiceProvider
    plainBinary
    encryptedBinary
    )以正常方式加密

  • 将加密二进制文件转换为加密文本:

    string encryptedText = Convert.ToBase64String(encryptedBinary);
    
解密:

  • 将加密文本转换为加密二进制:

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

  • 将纯二进制转换为纯文本:

    string plainText = Encoding.UTF8.GetString(plainBinary);
    
或者,您可以使用
StreamWriter
(用于文本到二进制的转换)、
CryptoStream
(用于DES加密)和
tobase64转换来传输数据,最后只保留加密和base64编码数据的转换(例如,使用
Encoding.ASCII
)。然后,您可以使用
FromBase64Transform
来反转该过程

如果base64对所创建的字符没有足够的限制,您可以编写自己的base64类型的转换—任何占用任意字节并生成可解码回这些字节的文本(仅使用允许的字符)都可以

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