问题标签 [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.
python - 如何实现模幂运算?
我试图计算这样的东西:a^b mod c,所有三个数字都很大。
我尝试过的事情:
Python 的 pow() 函数需要几个小时,但尚未产生结果。(如果有人能告诉我它是如何实现的,那将非常有帮助!)
我用 O(log e) 时间实现的从右到左的二进制方法大约需要 30~40 小时(不想等那么久)。
各种递归方法正在产生分段错误(在我更改了递归限制之后)
我可以做任何优化吗?
c++ - 字符串的彩虹表整数表示
我一直在阅读 RainbowCrack 和旧源代码的文档,但我无法找到开发人员哈希减少到 64 位整数的位置,它可以保存 UINT64_MAX 纯文本。
文档:https ://project-rainbowcrack.com/file_format.htm
摘抄:
起点和终点都是小端序的 64 位无符号整数,表示明文。
在这个例子中,字符集是“abcdefghijklmnopqrstuvwxyz0123456789”,明文长度范围是1到7。所以0代表明文“a”,1代表明文“b”,35代表明文“9”,36代表明文“ aa”,80603140211 代表明文“9999999”。
某处必须描述如何生成所有可能的明文(上例中大小为 80,603,140,211,36 个可能的字符,长度为 1 到 7)或更可能,归约函数的子集。给定一个散列,可能是具有 160 位输出的 SHA1,它会缩减为某个整数,占用 64 位,然后在长度为 1 到 7 的字符集 [a-z0-9] 中生成明文。
我想我要问的是,鉴于该过程是确定性的,并且必须从起点产生相同的哈希减少,如何在不引入随机性的情况下从 0 到明文长度 N 的良好分布发生?尝试从减少中稍微调整数字,这样可以索引到字符集,选择字符 c(重复 N 次),明文长度为 N?
注释:我查看了以 N 为基数到 N 基数的转换,我检查了整数模 N(字符集大小),编写了带有查找表的小程序,逐步完成了数十个玩具彩虹表程序的代码,并检查了减少是如何的完成了,但这些都没有帮助解决这个特定的问题,或者下一个试图在每个明文中产生合理的差异。
因此,无论谁因为很少或没有研究努力而投票否决,你就去吧。您可能只是认为我很无聊,而不是在提出问题之前实际上并没有尝试进行任何研究或取得进展的人。
python - 我的仿射密码的密码分析不是 100% 的时间
我必须创建一个函数,该函数将输入作为来自英语频率分析“p1”和“p2”的字母,以及密文“C1”和“C2”的频率分析,以及作为字母长度,我使用“AL”。我在 Python 中创建了一个函数来执行此操作,但它仅在某些时候有效。其他时候它给了我一个错误,我不知道为什么。这两个方程是: s(r+p1)=C1(mod AL) s(r+p2)=C2(mod AL)
该代码应该计算用于解密给定密文的乘法和加法密钥。
这是我的代码——第一个函数计算乘法模逆,第二个函数实现方程。
当我给它这个输入时:
它显示正确的答案。
当我给它这个输入时:
它给了我这个错误,我不知道为什么。(第一个字母长度为 26,第二个字母长度包括 10 个数字和 6 个符号,使其为 42)。
python - 不明白我收到的错误?
我有这个函数,我已经大大简化了它计算用于解密仿射密码的乘法和加法密钥,它在某些情况下有效,但在这种情况下,它给我一个错误,我不确定为什么。这是我的代码:
当我给它这个输入时,它会输出正确的答案,即 17 和 26:
但是,当我给它这个输入时,它会抛出这个错误:
它应该输出:
python - 如何用python找到一个数的质因数
我正在编写一个程序来计算弱 RSA 公钥的私钥。我想知道我将如何确定 value 的值p
和q
来自 value 的值n
。到目前为止,这是 Python 代码:
上面引用的.math
模块:
我需要做的似乎在 这里被引用,但这段代码是用 Java 编写的。
如果有人知道如何使用 python 获取p
和q
获取n
,将不胜感激。
非常感谢,Legorooj。
algorithm - 哪种算法最可靠地解决替换密码?
我正在研究一个问题,该问题简化为对用已知语言编写的冗长单字母替换密文的密码分析。这个问题很容易使用频率分析和单词模式手动解决,如 Sinkov 的基本密码分析中所述。我很难找到理论上验证的算法:Joux 的算法密码分析甚至没有涵盖这种基本的替换,而且我从盖恩斯的密码分析中一无所获:密码及其解决方案的研究(我应该看哪些其他资源?) .
有些方法很明显。依次决定每个替换,然后利用已知的,只有在过程中没有出错的情况下才有效。使用元启发式优化——例如,重新分配字母直到找到的有效单词数量最大化——使得很难判断搜索何时结束。也许测试变化的动态编程方法是最好的。或者,这个问题的答案包含其他可能幼稚的方法。
解决此类问题的首选算法是什么?
java - 密码密码分析实现
然后给定纯文本、加密文本和关键字长度,我被要求使用暴力攻击找到密码密钥。我所做的是从纯文本和加密文本中获取前六个字符并通过字母距离来计算密钥,但我认为这不是实现此过程的正确方法。有任何想法吗?
encryption - 如何从单字母替换密码中提取关键字
我是密码学的初学者,我有以下问题。我知道要从单字母替换密码中提取明文,我可以将字符移动 n 次,直到获得明文,或者我也可以使用频率字母分析。然而,通过这样做,我只得到了明文而不是他们使用的关键字。答案可能包括创建一个表,其中通过遵循频率字母分析,将字母链接到密文中使用的相应字母,但我不确定这是如何工作的。有人可以向我解释我将如何获得关键字吗?
algorithm - SHA256 查找部分冲突
我有两条信息:
我需要找到这两条消息(8 位)的 SHA256 部分冲突。因此,SHA256(messageA) 的前 8 个摘要 == SHA256(messageB) 的前 8 个摘要
我们可以在 中放任何字母和数字{}
,两个 {} 应该有相同的字符串
我已经尝试过使用哈希表的蛮力和生日攻击来解决这个问题,但它花费了太多时间。我知道像Floyd 和 Brent这样的循环检测算法,但是我不知道如何为这个问题构建循环。有没有其他方法可以解决这个问题?太感谢了!
security - 删除除首尾之外的所有链后,我们如何在彩虹表中找到明文
我开始学习彩虹表,我有一个问题:如果我们删除除第一个和结束明文之外的所有链,我们如何找到哈希的明文如果它是错误的并且我们不删除链,为什么我们不使用普通的预计算哈希表,因为它会使用相同的空间,所以我们专门使用彩虹表。