Playfair密码随机密钥(C#)

本文关键字:密钥 密码 随机 Playfair | 更新日期: 2023-09-27 18:30:15

需要用shotgnhillclimb方法解决Playfair代码,想先通过生成随机键来简单,然后通过英语书字母对freq计算分数。

但是我不知道如何产生非重复的随机键,它是25!可能性。 因此,如果我永远使用,我找到正确密钥的可能性非常小。

如何生成密钥,然后要求编译器不再使用它?我使用列表:添加还是删除?还是别的什么?或者可能是字符串[25!]?

Playfair密码随机密钥(C#)

通常的方法是从一个随机键开始,然后在每一步修改它。您可以执行的修改包括:交换两个关键字母、交换两个整行、交换两个整列、围绕中间列反射、围绕中间行反射或围绕两个主要对角线中的任何一个进行反射。在每个步骤中,您随机选择修改类型和修改位置。

您的随机选择可能对键矩阵没有影响。例如,如果选择交换两行,并为交换的两个操作数选择相同的两行,则键矩阵将保持不变。没关系。两个连续的操作也有可能相互反转,从而将键矩阵返回到其先前状态。那也没关系。因为每个决定都是随机做出的,有些改进了关键矩阵,有些使它变得更糟,所以你的爬山算法将很好地工作(尽管它可能需要比必要的多几个步骤)。

关键是重复随机密钥的概率相当低,如果确实发生并不重要。