我做了2個加密算法,其中一個關注速度,另一個是更強的加密。兩種加密算法 - 哪一種更好?
第一加密是這樣的:
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;
}
雖然這種加密的作品很快,也不是那麼安全。例如,如果有人使用與加密密鑰相似度爲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;
}
這種算法是比第一個更強。在此算法中,即使某人的解密密鑰與您的加密密鑰有99%的相似性,但輸出數據仍然完全不同。
這裏關鍵的每一個小小的差異都會引發巨大的差異。 但缺點是,它犧牲了一些速度。它比第一種算法慢,特別是在加密大文件時。
那麼你認爲什麼是更好的加密數據?更快的算法(第一個)還是第二個?我在談論大量的數據,因此速度是一個重要的因素。
這些都不是我所說的「加密」;保持謹慎......滾動你自己的加密算法是一個巨大的錯誤。需要很多的經驗和大量的數學來充分理解適當的加密技術,才能知道你是否在做一些非常愚蠢的事情。 –
一方面,我懷疑這個問題是否會更適合[security.stackexchange.com](http://security.stackexchange.com/),但問題是 - 他們可能會*活着吃你*爲了做^^^^並將其稱爲加密(不,認真地說,它們不會留下深刻的印象) –
但是這仍然是一種加密 - 您使用密鑰更改指定的數據,並且您需要完全相同的密鑰來解密加密的數據。如果您沒有確切的密鑰,您將永遠無法獲取原始數據。 那麼,即使你不認爲這是一種加密,哪種算法更好? – Travier