我的问题更多的是加密问题而不是编程。
我的代码各有5个字符,可以成对连接。结果是10个字符的代码。
问题是我必须存储这些值的数据库字段只有6个字符宽度,我不想调整它的大小。
是否有一种已知的方法或算法可以缩短价值对,从最多10个字符变为6个字符?结果可以由任何可打印的字符(最好是ASCII)组成,并且必须避免两个不同代码对的任何重复值。
另一个解决方案可能是将5个字符代码缩短为3个字符,但剩下的问题也是在成对连接时不允许重复。
谢谢你的任何想法。我尝试了几种解决方案(包括Base64编码!)但我的结果总是太长,或者它们包含重复的值。
答案 0 :(得分:1)
这个问题与加密无关。它应该被标记为information-theory。
有97个可打印的ASCII字符,因此您可以存储在6个字符中的最大信息量为39.6位(= 6×log 2 (97))。如果在10个字符中传播相同数量的信息,那么每个字符只能携带3.96位。这意味着您可以使用15个字符的字母表作为代码(例如,从A到O的大写字母)。