问题标签 [cryptanalysis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
184 浏览

encryption - (当前程序使用的 CPU 时间的皮秒数 + 时钟时间)是对伪随机数生成器的密码分析免疫的种子吗?

我正在尝试在 Haskell 中使用此ECDSA实现,如果您查看第 15 行,您会看到 k 值使用randomRIO,它使用全局随机数生成器,其 获取器使用theStdGen ,它使用mkStdRNG,通过以下方式生成种子:

(挂钟上的当前秒数)* 12345 +(挂钟上的当前皮秒数)+(当前程序使用的 CPU 时间的皮秒数)

这足以签署价值数十亿美元的数据吗?

0 投票
0 回答
193 浏览

public-key - 如何使用密码作为对称密钥来破解加密的公钥 (RSA)?

给定使用对称密钥(密码)加密的公钥(RSA)并且如果密码很弱,那么如何仅使用给定的加密公钥找到密码。

0 投票
1 回答
698 浏览

java - 用于密码分析的粒子群优化中的速度是多少?

我正在尝试为密码分析本地搜索实现粒子群优化算法,以找到简单替换密码的密钥。

我了解这种方法如何工作的理论并且已经实现了大部分算法,但我就是不知道如何计算速度。

粒子类:

群体类:

粒子是我为另一种算法制作的字母类的扩展,本质上是 26 个可以打乱的字母组成的 char 数组。粒子的“位置”(据我所知,它只是它的字母表,或者它的一些数字表示)。

swarm 类很容易解释,但包括一个适应度类,它给粒子评分在 0 到 1 之间(1 是最好的),代表键产生的英文文本的数量。

我遇到了这个算法的实现(虽然没有代码)找到建议这些步骤的 vigenere 密码的密钥:

用于查找实际密钥的建议算法

  1. PSO 搜索算法参数的初始化

PSO 参数在第一步中设置。这些参数包括粒子数 (Np)、密钥大小 (Nd)、最大迭代次数 (Nt)、自信心因子 (C1)、Swarm 置信因子 (C2) 和惯性权重 (w)。

  1. 离散鸟类或种群的初始化

a) 对于 vigenere 密码的密码分析:粒子的初始位置通过随机选择大小 Nd 的排列来确定,从整数 0 到 25 随机均匀采样。 b) 使用以下方法初始化每个粒子的速度:

其中:vi 是粒子 i 的速度 vmax 是最大速度,vmin 是最小速度,rand 是 0 到 1 之间的随机数。

  1. 项目清单

计算每个粒子的适应度函数值

a) 以粒子的位置为密钥解密密文。b) 求步骤 3 (a) 中得到的文本的适应度函数值。

  1. 更新粒子的速度和位置

计算步骤 3 中讨论的每个粒子的适应度函数值。

我似乎无法将公式粘贴到此处,但可以在此处的第 426 页上看到:http ://www.enggjournals.com/ijcse/doc/IJCSE13-05-05-064.pdf

0 投票
1 回答
247 浏览

java - 在 Java 中根据字母频率创建 char 数组的排列

我有一个HashMap将每个字母的频率存储在一个密文块中,以字符,整数的形式。LinkedHashMap然后按最频繁的降序将地图排序为 a 。

然后,我将这些频率与已知的字母频率列表进行比较,以尝试猜测密码字母是什么。我遇到的问题是,如果 2 个或更多字母出现相同的次数。

例如,如果我们采取:

作为 5 个最常见的字母 desc,然后是密文中的字母频率:

那么假设最常见的D映射是 to是公平E的,其次是BtoT等。

如果字母频率是:

目前尚不清楚是否或应该映射到,I因为它们都是紧随其后的下一个最常见的。GHAB

我有点卡住了,需要一种方法来创建一组 char 数组,其中包含频率列表的每个排列。需要在 char 数组中输出类似的内容:

任何帮助将非常感激

0 投票
1 回答
198 浏览

c - 使用关键字生成排列

我必须通过爬山实现以下算法,该算法将在特定密码的密码分析中运行无数次。该算法产生标准字母表 {A,B,C,...,Y,Z} 的排列,其密钥 K 由相同字母表的 7 个字母组成,如下所示:

  • 假设 K = INGXNDM = {9, 14, 7, 24, 14, 4, 13}
  • 从右到左,在字母表上数 K1=9 个位置。到达 R,所以排列的第一个元素是 R:P = {R,...}
  • 将 R 标记为已使用,稍后我们将不得不“跳过”它。
  • 从 R 开始,向左数 K2=14 个位置,我们到达 D 并将其标记为已使用。P={R,D,...}
  • 下一个计数是 7,当到达 A 时,我们循环并认为 Z 跟随 A,所以我们到达 W:将其标记为已使用,P={R,D,W,...}
  • 下一个计数是 24,所以我们到达 V,因为我们跳过了 R、D 和 W。
  • 以此类推……当 K7=13 已经使用时,我们以 K1=9 重新启动
  • 得到的转置字母为:RDWVGBL ZHUKNFI PJSAMXT CQOYE

事实上,我需要解密代码中的逆排列。我的代码实现了一个链表来跳过使用过的字母。它以 0 为底,因此 A = 0, ... Z = 25 并返回逆排列 Pinv(i)=j,这意味着字母 i 位于位置 j。

我有两个问题:

  1. 如何优化 KeyToPermut 中的代码?分析器显然表明跨链的 for 循环是瓶颈。可能有一种避免链表的方法......?
  2. 显然密钥空间不是26!但要小得多:26^7,所以只是 26 的一个子集!可以生成。你知道生成的排列有多具体吗?它们是否属于已知的排列类别?例如,(到目前为止)我无法识别这些排列循环中的任何模式。

我使用VS2013和C,项目的其他部分是CUDA代码。(x64 平台)

感谢您的关注。

背景信息:密码使用的加密方案使用 4 个长度为 7 的密钥 K。因此,寻找明文的理论密钥空间是 26^28 即 131 位。该方法可以使用其他密钥长度:从 1 到 25 的任何值都可以。

0 投票
1 回答
94 浏览

persian - 如何编写波斯文本的 vigenere 密码分析?

如何为波斯语编写 Vigenere 密码分析?有波斯语的示例源代码吗?

0 投票
2 回答
561 浏览

cryptanalysis - 如何将字符串识别为 Malbolge 源代码?

假设给了我一个看起来完全是垃圾的字符串,并且要求我确定它可能是什么,那么密码分析师使用这些迹象来形成一组要测试的假设。Malbolge有这样的迹象吗?以下面的字符串为例。

0 投票
1 回答
28 浏览

encryption - 如果明文的加密版本始终相同,会暴露出哪些缺陷?

我正在开发一个接收消息的小型加密程序,例如“你好!”。每当我运行带有消息的程序时,它都会产生相同的加密结果“Hu8z209=yTu83tu8”。如果我使用差分密码分析来破解加密,我可以了解到算法中没有随机化。但这实际上会帮助我学习什么来破解加密?

0 投票
0 回答
160 浏览

testing - 使用 AES 加密的应用程序 - 测试

我在我的移动应用程序中使用 128 位密钥实现算法 AES,现在我想知道如何实际测试加密是否有效以及它有多安全,有没有一种方法可以模拟对我的应用程序的攻击(也许是一个免费软件)? 所以我可以看看它是否足够安全。

0 投票
1 回答
67 浏览

c - 在依赖于十六进制值的算法中循环

我只是在学习 c,我正在尝试从算法中实现一个 for 循环。我对如何实现它感到非常困惑,请参阅下面的尝试。任何帮助或想法将不胜感激,这意味着循环中的循环依赖于十六进制值。它来自差分密码分析算法。

算法中所述的循环是:

在此处输入图像描述

在此处输入图像描述

密文 C0 = (L0,R0) 密文 C1 = (L1,R1)

在哪里

到目前为止我的尝试

但我不知道如何处理对十六进制值的依赖。它是后序:(0, 0), (0, 1), (1, 2), ..., (0, 255), (1, 0), ...</p>

所以这意味着所有可能的组合——只要你把它们全部看完,排序就无关紧要了。