-1

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

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

4

2 回答 2

4

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

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

编辑:如评论中所述,SoapHexBinary有一种简单的方法。当然,您可能希望将该类的使用包装在不太特定于 SOAP 的类型中:)

当然,这将使用比 base64 更多的空间。一种替代方法是使用 base64,但使用一组不同的字符:找到可以使用的 65 个字符(第 65 个用于填充)并以这种方式对其进行编码。(您可能会发现有一个 base64 库可用,它允许您指定要使用的字符,但如果没有,它很容易编写。)

不要试图只使用法线——它不适用于本质上不是文本的数据Encoding

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

于 2013-07-19T06:02:54.943 回答
0

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

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

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

于 2013-07-19T06:23:50.550 回答