如何解决这种加密是否“安全”?
| 我必须首先说我从未学习过密码学,并且我在该主题上所知道的一切只是基本概念。 我们正在寻找一种使用密码来加密某些数据(存储到数据库中)的快速简便的方法。 我知道“最安全”的算法是AES,但是对我们来说可能太复杂了,我知道它需要我们获得美国政府的授权,等等。 我们考虑了这个(简单的)算法,它使我想起了(但我可能错了)某种“一个时间垫”。 (它不是用任何特定的语言编写的……这只是想法:))// The string we need to encrypt
string data = \"hello world\";
// Long string of random bytes that will be generated the first time we need to encrypt something
string randomData = \"aajdfskjefafdsgsdewrbhf\";
// The passphrase the user selected
string passphrase = \"foo\";
// Let\'s generate the encryption key,using randomData XOR passphrase (repeating this one)
string theKey = \"\";
j = 0;
for(i = 0; i < randomData.length; i++)
{
theKey += randomData[i] ^ passphrase[j];
j++;
if(j == passphrase.length) j = 0;
}
// Encrypt the data,using data XOR theKey (with theKey.length >= data.length)
string encryptedData = \"\";
for(i = 0; i < data.length; i++)
{
encryptedData += data[i] ^ theKey[i];
}
在磁盘上,我们将仅存储randomData和cryptomedData。
每次都会向用户询问密码短语。
这样的算法有多安全?
除了蛮力外,还有其他方法可以破解吗?我认为统计分析不会对此起作用,对吗?
它像“一次性”一样“安全”吗?
谢谢!
解决方法
不,这是不安全的。
如果将随机数据与加密数据一起存储,则相当于将密码与XOR进行加密:这是因为攻击者可以简单地将加密数据与随机数据进行XOR,并获得明文XOR密码。
,您只需导入AES库,然后让它完成所有繁重的工作即可。来自美国政府的授权?它是一种公共功能,美国政府也使用它。
,这非常薄弱。统计分析将在一瞬间将其破解。一些勤奋的笔墨猜测可能很快也会破解它。
唯一的例外是:(1)a1ѭ来自真正的加密强度来源;(2)
randomData
至少与您的明文数据一样长;(3)randomData
从未被用于其他消息, (4)您完全摆脱了passphrase
,并以randomData
作为您的钥匙。在这种情况下,您将获得一次性的费用。
,不,这不安全。将此xor与随机数据和密码一起使用是完全错误的。
一次性密码加密需要随机数据的长度与要加密的数据的长度相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。