使用Base64String对带out的字符串进行加密和解密

本文关键字:加密 解密 字符串 Base64String 对带 out 使用 | 更新日期: 2023-09-27 18:24:03

如何在不使用Base64String的情况下加密解密文本?

我不想使用Base64String,因为加密文本不应该包含任何特殊字符,如@、$、#、/、''、|、=、%、^

使用Base64String对带out的字符串进行加密和解密

如果您不想使用base64,那么显而易见的方法是使用base16,即十六进制。

Stack Overflow上有很多在字节数组和十六进制字符串表示之间转换的例子。(BitConverter.ToString(data).Replace("-", "")是一种低效的转换字符串的方法;没有什么更简单的方法了,但代码不多。)

编辑:正如评论中所指出的,SoapHexBinary有一个简单的方法来做到这一点。当然,您可能希望将该类的使用封装在不太特定于SOAP的类型中:)

当然,这将比base64占用更多的空间。一种选择是使用base64,但使用不同的字符集:找到可以使用的65个字符(第65个用于填充),并以这种方式进行编码。(你可能会发现有一个base64库,可以让你指定要使用的字符,但如果没有,写起来就很容易了。)

不要尝试只使用普通的Encoding——这不适合基本上不是文本的数据。

编辑:如评论中所述,您也可以使用base32。这可能是不区分大小写的(可能很方便),并且您可以避免I/1和O/0以增加清晰度。不过,它更难编码和调试。

MySQL连接器源代码中有一个很好的例子,用于实现ASP.NET成员资格提供程序。下载和研究可能会有点麻烦,但它有一个完善的加密和解密模块。

http://dev.mysql.com/downloads/connector/net/#downloads下载前选择"源代码"选项。

如果您想对数据传输或压缩字符存储进行编码/解码,您应该编辑您的问题。编码问题的答案与加密/解密问题的答案大不相同。