- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于由在明文/ key 对上工作的给定(对称或非对称)加密算法生成的给定密文,找到产生相同密文的不同明文/ key 对有多难?
找到两个明文/ key 对导致相同的密文有多难?
导致这个问题的原因是另一个可能与上述问题无关的问题:
如果您有一个密文和一个 key ,并想使用某个解密例程对其进行解密,该例程通常会告诉您 key 是否正确。但是它怎么知道呢?它是否在结果明文中寻找某种模式,表明解密成功?在某些不同的明文中是否存在另一个 key 结果,其中包含模式并且例程也报告为“有效”?
后续问题灵感来自答案和评论:
如果允许的明文/ key 对在以下(或两种)方式中受到限制:
1)明文以 key 的KCV(Key check value)开头。
2)明文以一些明文/键组合的哈希值开始
这会使碰撞发现不可行吗?是否清楚,这样的明文/ key 存在=
最佳答案
你的问题的答案是你的措辞,是没有碰撞阻力。
对称案例
假设您有一个纯文本 PT,其长度是底层分组密码的块长度的倍数。您生成一个随机 IV 并使用 key K、CBC 模式和无填充加密纯文本。
生成生成相同密文 CT 的纯文本 PT' 和 key K' 很容易。只需随机选择 K',使用 key K' 和 IV 解密 CT,即可得到碰撞的 PT'。
如果您还使用填充,这会变得有点复杂,但它仍然是可能的。如果您使用 PKCS#5/7 填充,只需继续生成 key ,直到找到使您的解密文本 PT' 的最后一个八位字节为 0x01 的 key 。这将平均需要 128 次尝试。
要使这种冲突发现不可行,您必须使用消息身份验证代码 (MAC)。
不对称表 shell
类似的东西适用于 RSA 公钥加密。如果您不使用填充(这显然是不推荐的,甚至可能不被大多数加密库支持),并使用公钥 (N,E) 将 PT 加密为 CT,只需生成第二个 key 对 (N',E) ',D') 使得 N' > N,那么 PT' = CT^D' (mod N) 将在 (N',E') 下加密成 CT。
如果您使用 PKCS#1 v1.5 填充进行 RSA 加密,则 RSA 私钥操作后最重要的八位字节必须是 0x02,它的概率约为 256 分之一。此外,第一个 0x00 值的八位字节必须不早于索引 9 发生,这将以很高的概率(大约 0.97)发生。因此,平均而言,您必须平均生成大约 264 个相同位大小的随机 RSA key 对,然后才能找到一个对于某些纯文本可能产生相同密文的 key 对。
如果您使用 RSA-OAEP 填充,则私钥解密肯定会失败,除非使用相应的公钥生成密文。
关于encryption - 加密算法的抗冲突性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9453869/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我heard “PKCS#1 v2.0 加密通常称为 OAEP 加密”。 在我的项目中使用它之前,我需要某种“官方”文档来说明这一点。我试图找到它但没有成功。知道在哪里可以找到吗? 谢谢! (顺便说一
已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 来自:加密公司 收件人:x$*sj4(就是你) 如果您选择接受的话,您的任务是用最短的击键次数
我正在使用带有 docker/docker compose 和 traefik 的 ubuntu 18.04.1 LTS。使用暂存 Let's Encrypt caserver ( https://a
我目前正在完成一篇关于通过各种密码算法加密数据的论文。 我花了很多时间阅读期刊和论文,但还没有找到任何关于它们的性能复杂性的记录。 有人知道以下算法的 Big-O 复杂度吗? RSA DES 三重 D
我正在为嵌入式系统(微 Controller )编写固件。固件可以通过引导加载程序(也是我编写的)进行更新。 现在需要采取措施防止固件被操纵,因此系统必须仅执行具有某种有效签名的下载固件。 固件文件已
我试图了解加密(“受密码保护”)Office 2007 文档(特别是 Excel 文档)的捆绑方式。我正在试验一个已知的、受密码保护的电子表格。 当我解压 XLSX 文件时,我遇到了三个条目: [6]
K8s对encrypt secret data具有此功能,这需要修改kube-apiserver配置,我如何在GKE中做到这一点? 最佳答案 简短的答案是,你不能。 Kubernetes Engine
我正在使用 ENCRYPT() 函数在 mysql 中存储一个字符串。我想获取匹配该字符串的行,但新的 ENCRYPT() 调用给了我一个不同的值,因此它们永远不会匹配。 这是预期的,因为我没有(也不
在带有 Python 2.7 和 GPG4Win v2.2.0 的 Windows 7 上使用 python-gnupg v0.3.5 test_gnupg.py 导致 2 次失败: Test tha
我尝试兼容 C# 和 Java 的加密/解密。 据我所知,默认模式在 Java 中是“ecb/pkcs5”,在 C# 中是“cbc/pkcs7”。 所以我匹配这些东西。 第一个问题是 PKCS7 和
我使用 SwiftyRSA 使用带有 PKCS1 填充的公钥加密字符串。不幸的是,当我用 Java 解密我的加密字符串时,我发现了 BadPadding: Encryption Error。到目前
比特币是一种匿名的加密数字货币。几个月前我有了加密文件的想法,其中需要比特币的支出证明才能解密文件。当比特币被发送到给定地址时,它会显示在分布在对等网络中的块文件中。区块链的完整性是通过需要大量计算机
我有一个类,我试图用依赖注入(inject)替换 Crypt::encrypt 的外观用法: encrypter= $encrypter; }
我想使用带有 RSA 算法的 OpenSSL 使用私钥加密文件: openssl rsautl -in txt.txt -out txt2.txt -inkey private.pem -encryp
我在 TCL 中使用 DES 来加密一些短语,我想将这些加密的短语存储在一些我需要轻松操作的 ascii 文件中。因此,我希望“加密短语”仅由标准 ascii 字符构成(最好没有空格)。 我正在使用类
我在 TCL 中使用 DES 来加密一些短语,我想将这些加密的短语存储在一些我需要轻松操作的 ascii 文件中。因此,我希望“加密短语”仅由标准 ascii 字符构成(最好没有空格)。 我正在使用类
我对Android平台不同的数据存储加密机制有点困惑。据我了解: 全盘加密影响整个/data 磁盘并且只能是由用户激活/停用。 ( https://source.android.com/securit
我正在使用 Lumberjack 作为日志记录平台(Objective C/Swift)有没有办法将日志加密写入文件? 如果是,那么任何例子都是有用的 另外,之后如何读取加密后的日志 密集型日志记录是
我确定这是一个典型的场景,但我找不到合适的步骤顺序。 我有一个运行 Apache 的 www.example.com 服务器(比如)1.1.1.1。我正在使用 Caddy 在 2.2.2.2 上构建一
我是一名优秀的程序员,十分优秀!