问题标签 [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.
public-key - 如何使用密码作为对称密钥来破解加密的公钥 (RSA)?
给定使用对称密钥(密码)加密的公钥(RSA)并且如果密码很弱,那么如何仅使用给定的加密公钥找到密码。
java - 用于密码分析的粒子群优化中的速度是多少?
我正在尝试为密码分析本地搜索实现粒子群优化算法,以找到简单替换密码的密钥。
我了解这种方法如何工作的理论并且已经实现了大部分算法,但我就是不知道如何计算速度。
粒子类:
群体类:
粒子是我为另一种算法制作的字母类的扩展,本质上是 26 个可以打乱的字母组成的 char 数组。粒子的“位置”(据我所知,它只是它的字母表,或者它的一些数字表示)。
swarm 类很容易解释,但包括一个适应度类,它给粒子评分在 0 到 1 之间(1 是最好的),代表键产生的英文文本的数量。
我遇到了这个算法的实现(虽然没有代码)找到建议这些步骤的 vigenere 密码的密钥:
用于查找实际密钥的建议算法
- PSO 搜索算法参数的初始化
PSO 参数在第一步中设置。这些参数包括粒子数 (Np)、密钥大小 (Nd)、最大迭代次数 (Nt)、自信心因子 (C1)、Swarm 置信因子 (C2) 和惯性权重 (w)。
- 离散鸟类或种群的初始化
a) 对于 vigenere 密码的密码分析:粒子的初始位置通过随机选择大小 Nd 的排列来确定,从整数 0 到 25 随机均匀采样。 b) 使用以下方法初始化每个粒子的速度:
其中:vi 是粒子 i 的速度 vmax 是最大速度,vmin 是最小速度,rand 是 0 到 1 之间的随机数。
- 项目清单
计算每个粒子的适应度函数值
a) 以粒子的位置为密钥解密密文。b) 求步骤 3 (a) 中得到的文本的适应度函数值。
- 更新粒子的速度和位置
计算步骤 3 中讨论的每个粒子的适应度函数值。
我似乎无法将公式粘贴到此处,但可以在此处的第 426 页上看到:http ://www.enggjournals.com/ijcse/doc/IJCSE13-05-05-064.pdf
java - 在 Java 中根据字母频率创建 char 数组的排列
我有一个HashMap
将每个字母的频率存储在一个密文块中,以字符,整数的形式。LinkedHashMap
然后按最频繁的降序将地图排序为 a 。
然后,我将这些频率与已知的字母频率列表进行比较,以尝试猜测密码字母是什么。我遇到的问题是,如果 2 个或更多字母出现相同的次数。
例如,如果我们采取:
作为 5 个最常见的字母 desc,然后是密文中的字母频率:
那么假设最常见的D
映射是 to是公平E
的,其次是B
toT
等。
如果字母频率是:
目前尚不清楚是否或应该映射到,I
因为它们都是紧随其后的下一个最常见的。G
H
A
B
我有点卡住了,需要一种方法来创建一组 char 数组,其中包含频率列表的每个排列。需要在 char 数组中输出类似的内容:
任何帮助将非常感激
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。
我有两个问题:
- 如何优化 KeyToPermut 中的代码?分析器显然表明跨链的 for 循环是瓶颈。可能有一种避免链表的方法......?
- 显然密钥空间不是26!但要小得多:26^7,所以只是 26 的一个子集!可以生成。你知道生成的排列有多具体吗?它们是否属于已知的排列类别?例如,(到目前为止)我无法识别这些排列循环中的任何模式。
我使用VS2013和C,项目的其他部分是CUDA代码。(x64 平台)
感谢您的关注。
背景信息:密码使用的加密方案使用 4 个长度为 7 的密钥 K。因此,寻找明文的理论密钥空间是 26^28 即 131 位。该方法可以使用其他密钥长度:从 1 到 25 的任何值都可以。
persian - 如何编写波斯文本的 vigenere 密码分析?
如何为波斯语编写 Vigenere 密码分析?有波斯语的示例源代码吗?
cryptanalysis - 如何将字符串识别为 Malbolge 源代码?
假设给了我一个看起来完全是垃圾的字符串,并且要求我确定它可能是什么,那么密码分析师使用这些迹象来形成一组要测试的假设。Malbolge有这样的迹象吗?以下面的字符串为例。
encryption - 如果明文的加密版本始终相同,会暴露出哪些缺陷?
我正在开发一个接收消息的小型加密程序,例如“你好!”。每当我运行带有消息的程序时,它都会产生相同的加密结果“Hu8z209=yTu83tu8”。如果我使用差分密码分析来破解加密,我可以了解到算法中没有随机化。但这实际上会帮助我学习什么来破解加密?
testing - 使用 AES 加密的应用程序 - 测试
我在我的移动应用程序中使用 128 位密钥实现算法 AES,现在我想知道如何实际测试加密是否有效以及它有多安全,有没有一种方法可以模拟对我的应用程序的攻击(也许是一个免费软件)? 所以我可以看看它是否足够安全。