如何在不使用 Base64String 的情况下加密解密文本?
我不想使用 Base64String,因为加密文本不应包含任何特殊字符,如 @、$、#、/、\、|、=、%、^
如果您不想使用base64,那么显而易见的方法是使用base16 - 即十六进制。
Stack Overflow上有很多字节数组和十六进制字符串表示之间转换的例子。(BitConverter.ToString(data).Replace("-", "")
是一种执行字符串转换的低效方式;反向操作没有这么简单,但代码不多。)
编辑:如评论中所述,SoapHexBinary
有一种简单的方法。当然,您可能希望将该类的使用包装在不太特定于 SOAP 的类型中:)
当然,这将使用比 base64 更多的空间。一种替代方法是使用 base64,但使用一组不同的字符:找到可以使用的 65 个字符(第 65 个用于填充)并以这种方式对其进行编码。(您可能会发现有一个 base64 库可用,它允许您指定要使用的字符,但如果没有,它很容易编写。)
不要试图只使用法线——它不适用于本质上不是文本的数据。Encoding
编辑:如评论中所述,您也可以使用base32。这可以不区分大小写(可能很方便),并且您可以避免 I/1 和 O/0 以增加清晰度。但是,编码和调试更难。
ASP.NET 成员资格提供程序实现的 MySQL 连接器源代码中有一个很好的示例。下载和研究可能有点麻烦,但它有一个完善的加密和解密模块。
http://dev.mysql.com/downloads/connector/net/#downloads 下载前选择“源代码”选项。
如果您想对数据传输或压缩字符存储进行编码/解码,您应该编辑您的问题。对编码问题的回答与对加密/解密问题的回答大不相同。