对称双射弦算法?

我正在寻找一种可以将字符串一对一映射到另一个字符串的算法。 我想要一个给定字母表的算法,我可以执行对称映射函数。

例如:假设我有字母“A”,“B”,“C”,“D”,“E”,“F”。 对于每N个字母排列,我需要F(“ABC”)=“CEA”和F(“CEA”)=“ABC”。

当然,这样的算法存在。 如果你知道算法,请发布它的名称,我可以研究它。 如果我的要求不够清楚,请告诉我。

提前致谢。

编辑1:我应该说明我需要足够的熵,以便F(“ABC”)等于“CEA”和F(“CEA”)=“ABC”,但是我不希望F(“ABD”)等于“ CEF”。 注意两个输入字母保持不变并且两个相应的输出字母保持不变?

所以凯撒密码/ ROT13或洗牌阵列是不够的。 但是,我不需要任何“真正的”安全性。 只是足够的熵使函数的输出随机出现。 弱加密算法欢迎。


只需创建一个包含2个字段的对象数组 - 一个字母和一个随机数。 对数组进行排序。 由随机数字。 这将创建一个映射,其中字母表的第i个字母现在映射到数组中的第i个字母。


如果简单的换位或替换不够好,听起来像是你想推进到多字母密码。 Vigenère密码非常易于在代码中实现,但如果不使用计算机,仍然很难实现。


我建议如下。

执行输入的密集编码为正整数 - 字母大小为n ,字符串长度为m ,可以将字符串编码为0到n^m - 1之间的整数。 在你的例子中,这将是范围[0,215] 。 现在对已编码的数字执行固定的对数并重新解码。

链接地址: http://www.djcxy.com/p/37259.html

上一篇: Symmetric Bijective String Algorithm?

下一篇: Scikit Image Marching Cubes Output