用大写字母加密,无特殊字符

Hoh*_*Hoh 2 .net vb.net encryption cryptography

我正在寻找一些加密/解密算法,它只给我大写字母而没有特殊字符(+、/、=)。我使用过DES算法和Rijndael (AES)算法,但这两种算法都给了我特殊字符和混合大小写字符。

我需要可读的许可证来创建,因为我和我的客户在需要时更容易理解它。

如果您需要更多信息,请告诉我,我可以给您。

fej*_*oco 5

加密总是二进制的。您可以将该二进制数据编码为字符串,例如 Base64。那确实包含小写字母和一些特殊字符。

Base64 使用 64 个字符,因此得名。那是 6 位信息 (2^6)。但是您需要对 8 位字节进行编码。所以 Base64 所做的是从输入中取出 3 个字节(3*8=24 位),并将其转换为 4 个字符(4*6=24 位)。

你需要做的不同的是你有一个更小的字符集。有26个大写字母。我建议您再找 6 个可接受的字符,然后每个字符得到 5 位(2^5=32)。或者只使用 16 个字符,即每个字符 4 位(2^5=16)。

这让我想起,每个字符 4 位基本上是十六进制编码。所以这是最简单的解决方案。将您的二进制数据转换为十六进制,然后您会得到 0..9 和 A..F 字符。然后将 0..9 更改为 G..P。现在你有一个只包含字母 A 到 P 的字符串。你甚至可以跳过大写的 O 或 I 以减少混淆。

您可以在任何地方找到二进制到十六进制的转换,反之亦然,也在 SO 上。您可以使用正确填充的字符映射Dictionary<char, char>(对不起,我是一个 C# 人,不知道它在 VB 中叫什么)。