C# 两种加密算法-哪一种更好?
我已经做了两个加密算法,其中一个侧重于速度,另一个是更强的加密 第一个加密是:C# 两种加密算法-哪一种更好?,c#,.net,cryptography,C#,.net,Cryptography,我已经做了两个加密算法,其中一个侧重于速度,另一个是更强的加密 第一个加密是: public static byte[] Encrypt(byte[] bytes, string key) { byte[] Key = Encoding.ASCII.GetBytes(key); int index = 0; for (int i = 0; i < bytes.Length; i++) { if (index >= key.Length
public static byte[] Encrypt(byte[] bytes, string key)
{
byte[] Key = Encoding.ASCII.GetBytes(key);
int index = 0;
for (int i = 0; i < bytes.Length; i++)
{
if (index >= key.Length) index = 0;
bytes[i] += Key[index];
index++;
}
return bytes;
}
公共静态字节[]加密(字节[]字节,字符串密钥)
{
byte[]Key=Encoding.ASCII.GetBytes(Key);
int指数=0;
for(int i=0;i=key.Length)索引=0;
字节[i]+=键[index];
索引++;
}
返回字节;
}
虽然这种加密工作很快,但并不安全
例如,如果有人使用与加密密钥相似90%的密钥解密您的数据,则输出数据也将与原始数据相似90%
这很糟糕。例如,如果您正在加密文本,而某人获得的解密密钥与您用于加密的密钥90%相似,则他可能能够理解您的大部分文本
我还制作了另一种加密算法,这是:
public static byte[] Encrypt(byte[] bytes, string key)
{
byte[] Key = Encoding.ASCII.GetBytes(key);
byte sum = 0;
for (int i = 0; i < Key.Length; i++)
{
sum += Key[i];
}
int index = 0;
for (int i = 0; i < bytes.Length; i++)
{
if (index >= key.Length) index = 0;
bytes[i] += (byte)(Key[index] + sum);
index++;
}
return bytes;
}
公共静态字节[]加密(字节[]字节,字符串密钥)
{
byte[]Key=Encoding.ASCII.GetBytes(Key);
字节和=0;
for(int i=0;i=key.Length)索引=0;
字节[i]+=(字节)(键[index]+和);
索引++;
}
返回字节;
}
该算法比第一个算法更强。在该算法中,即使某人的解密密钥与您的加密密钥99%相似,输出数据仍将完全不同
这里的每一个小差异都会引发巨大的差异。
但缺点是,它牺牲了一些速度。它比第一种算法慢,尤其是在加密大文件时
那么,您认为什么更适合加密数据呢?更快的算法(第一个),还是第二个?我说的是大量的数据,所以速度是这里的一个重要因素。 < P>我认为两者都不强,两者都很容易受到A。因此,如果我知道一个加密的文件有一个已知的头,我可以通过大约20分钟的编程来反向生成密钥,以编写破解密钥的程序,而一旦写入,程序可能只需要几秒钟就可以运行
即使我没有可以比较的明文,但我知道加密的blob是一种已知语言的文本,这两种语言也很容易受到基于它的攻击。这两种语言都不是我所说的“加密”;小心。。。使用自己的加密算法是一个巨大的错误。要充分理解正确的加密需要大量的经验和数学知识,才能知道你是否真的在做一些非常愚蠢的事情。一方面,我想知道这个问题是否更适合,但是:问题是——他们可能会因为你做了那件事而活活吃掉你,并称之为加密(不,说真的,他们不会留下深刻印象)但这仍然是一种加密——使用密钥更改指定的数据,并且需要完全相同的密钥来解密加密的数据。如果没有确切的密钥,就永远无法得到原始数据。因此,即使您不认为这是加密,哪种算法更好?是的,因为您已经描述了一个替代品。在密码方面,很长一段时间以来一直被认为是易受攻击的东西。如果您想使用现代密码,请在CBC或CTR模式下使用AES(仅用于机密性,而不是完整性或真实性,请使用GCM模式)@Travier嗯,我想找的第一件事是人们发送具有可预测的二进制头的文件;pdf、zip、word,还有很多xml文件;正是从这一点上,可能就可以在第一个算法的密钥反转方面取得巨大的领先。至于第二件事:有关于这个主题的完整论文。我不是加密专家Graphics专家。我能说的就是:我一刻也不相信这一点。像RC4和AES这样的加密算法不容易受到这样的攻击吗?@Travier RC4对某些类型的攻击有轻微的脆弱性;尽管经过几十年的研究,AES不容易受到任何攻击。但是如果AES是像RC4这样的对称密钥加密,那么W是否不那么脆弱?寻找带有AES的已知文件头是行不通的吗?@ Tracvier-Hew,我认为它本身并不适合考虑密码原语。密钥流重用与RC4(或CTR模式中的AES)的流密码一起使用。是灾难性的,因此密钥与随机初始化向量相结合。ECB模式下的AES不需要IV,而且可以肯定的是,它会泄漏有关明文的信息。