【问题标题】:Decoding of an encrypted text with a not specified crypt-key in python在python中使用未指定的加密密钥解码加密文本
【发布时间】:2021-04-20 07:02:57
【问题描述】:

代码中给出了以下消息:

V C Z J C Z I Z J M Z J L X Y H M J Y H E M C W S J M W Z N C X W J S Y Q X W Z C O X J H M C J D V S O J H Y H W W Z O H @

编写一个程序,在知道原始消息是 LATIN 并且一个字符也已用于空格(J 字符)的情况下,建议对同一消息进行可能的解密。附加信息:

  • 这是一个使用公式 y = f (x) mod p 和 p 为素数的代码
  • 了解我们在说什么很重要
  • 消息提供了项目 2 的信息

你们中的一些人知道如何在 python 中解决这个问题吗?

【问题讨论】:

  • 在不知道 f (x) 的类型的情况下,您只能采用单字母密码的标准方法(字母分布与标记语言中的字母分布相比)
  • 你已经尝试了4周,你到底尝试了什么?向我们展示您的代码/方法。
  • 也许你可以从一本拉丁字典开始计算其中的所有字母,然后你可以计算出每个字母出现在字典中的百分比(即字母 A 占所有字母的 X%)。然后你可以数数这段文字中的字母并尝试关联。
  • @MrSmith42 我是他的同学,我们试图在不写代码的情况下接近它,只是为了至少了解哪个是句子,我们发现部分加密的句子是:“UTI TIBI SI VOLES LE_STRA SCRIPTOR ALGORITMO EST QUAM CELERRIME。”所以“@”是一个简单的“.”。我们无法达到起始加密功能,没有它我们就无法制定算法。如果它可以帮助你,加密字母表有 29 个字母。
  • 显然 p = 29。

标签: python algorithm encryption


【解决方案1】:

如果你取几个连续的字母:

S (19) -> M (13)
T (20) -> C (3)
U (21) -> V (22)
V (22) -> L (12)

假设p = 29,你可以看到连续字母之间的增量(mod 29)是19。

因此:f(x) = 19*x

注意f(x) mod p加密的方法。我将其作为练习留给读者确定如何解密

【讨论】:

  • 我正在努力理解,现在我想知道如何解密它,我唯一发现的是字母之间的增量是23,但我不知道如何进行,你能再给我一个小费吗?
  • 要解密,您可以使用加密方法构建一个查找表,例如数组或映射。
  • 是的,问题是我不明白如何达到加密方法,我只是想不明白如何做到这一点。
  • 查看上面答案的第一部分 - 查看一些连续的字母及其加密值。
  • 好的,我现在明白了加密阶段,基本上他在做的是:cryptedLetter * 19 % 29,现在你能解释一下如何做解密阶段?我真的很感激:D
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 2017-12-04
相关资源
最近更新 更多