.net - 大写字母加密,无特殊字符

标签 .net vb.net encryption cryptography

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

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

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

最佳答案

加密 总是二进制的。您可以将该二进制数据编码为字符串,例如,在 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 中叫什么)。

关于.net - 大写字母加密,无特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043403/

相关文章:

javascript - Javascript 中的服务器代码

java - 将 C# 密码学转换为 Java

java - 如何从内存中获取 'Zero out' Java 中的 AES SecretKeySpec key

.net - 解析器错误消息 : Could not load type 'TestMvcApplication.MvcApplication'

c# - 在 .net 中使用 JsonConvert 对具有可变长度的对象进行 JSON 序列化

c# - 组合应用程序配置的方法(例如 PRISM、MEF)

c# - 报告服务 : Getting reporting services path

c# - Pcap.net 与 Sharppcap

vb.net - 在VB中寻找模拟退火实现

c - 我的 CS50 Vigenere 密码程序有什么问题?