Cryptography 如果原始位置没有字母,如何计算英文单字母密码的密钥空间?

Cryptography 如果原始位置没有字母,如何计算英文单字母密码的密钥空间?,cryptography,Cryptography,我刚刚开始学习密码学,了解到单字母密码的密钥空间是26x25x24…x3x2x1置换的结果。但这需要考虑密码字母可以与原始明文字母匹配的密钥。如果我不希望任何字母代表原始字母,如何计算新的键空间?也许我很天真,但它是否像从25而不是26开始排列一样简单,或者是否需要其他方法来计算所有可能的密钥?我试着在谷歌和Stackoverflow上找到答案,但是我找不到。如果这是一个愚蠢的问题,我深表歉意。这被称为: 在组合数学中,错乱是一组元素的排列,使得没有元素出现在其原始位置。换句话说,错乱是一种没有

我刚刚开始学习密码学,了解到单字母密码的密钥空间是26x25x24…x3x2x1置换的结果。但这需要考虑密码字母可以与原始明文字母匹配的密钥。如果我不希望任何字母代表原始字母,如何计算新的键空间?也许我很天真,但它是否像从25而不是26开始排列一样简单,或者是否需要其他方法来计算所有可能的密钥?我试着在谷歌和Stackoverflow上找到答案,但是我找不到。如果这是一个愚蠢的问题,我深表歉意。

这被称为:

在组合数学中,错乱是一组元素的排列,使得没有元素出现在其原始位置。换句话说,错乱是一种没有固定点的排列

操作已写入
!n
并由等式
给出!n=(n-1)(!(n-1)+!(n-2))
,其中
!0
为1且
!1
为0。例如,您可以编写以下Ruby代码来执行此操作:

#!/usr/bin/env ruby

def derangements(n)
  case n
  when 0
    1
  when 1
    0
  else
    (n - 1) * (derangements(n - 1) + derangements(n - 2))
  end
end

puts derangements(ARGV[0].to_i)
使用26运行此代码可以得到148 362 637 348 470 135 821 287 825。这种密码的熵略高于86位,但很快就会下降到字母频率密码分析