encryption - 如何在加密算法中使用 key ?

标签 encryption cryptography

我在浏览时发现了关于加密的好文章。然而,他们都没有描述为什么 key 长度很重要,以及 key 的确切用途。我的猜测是可以这样工作:

Plaintext:   0101001101010101010
Key:         01010010101010010101   //the longer the key, the longer unique sequence
XOR or smth: //result

这至少是它的工作原理还是我遗漏了什么?

最佳答案

密码系统通常比您描述的 XOR 系统复杂得多。事实上,只有当您拥有的 key 至少与纯文本消息的位数一样多,并且您只使用该 key 来加密一条消息时,XORing 才真正起作用。这称为“一次一密”加密。

在大多数密码系统中, key 并不直接与明文结合。相反,它控制由加密算法执行的转换。理想情况下,算法执行的转换过于复杂,无法在不知道或猜测 key 的情况下进行逆向。因此,在理想情况下, key 中的位数决定了通过“蛮力”破解所需的平均猜测次数。

然而在实践中,密码学家可以从密文(即加密消息)中收集线索,从而减少搜索空间,因此需要使用更多的位数。对于我们通常使用的公钥加密系统来说尤其如此。这些系统基于难以逆向的数学计算(例如大素数对的乘法),位数决定了执行逆向计算的“问题”大小(例如两个大素数乘积的因式分解)。

您对如何将 key “应用”到纯文本感兴趣。答案是它因一个密码系统而异,而且这个过程通常相当复杂。这个问题不适合一般性回答。

关于encryption - 如何在加密算法中使用 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437492/

相关文章:

security - 使用 openssl/makecert 工具创建 x509 证书

c++ - 如何在 C++ 中使用多个签名者实体验证 PKCS7 签名

ios - 为什么 Swift5 上的 CryptoSwift 文本加密失败?

encryption - 解密(不仅是解码)二维码

security - 这种加密是 "safe"吗?

java - 将字符串压缩到文本文件(AES)后解密失败

c++ - openssl 中已弃用的 AES_ige_encrypt() API 的替代方案

python-2.7 - i2osp 和 os2ip 的实现

security - 在 web2py 中加密存储数据的最佳方法是什么?

java - 使用 AES-256 Java 加密