創建自己的加密和解密算法
當談到密碼學時,我非常沒有受過教育。我試圖找到我的問題的答案,但我所讀到的內容並沒有完全涵蓋我所問的內容。
我想出了自己的加密算法(我敢肯定這不是什麼新鮮事),我想知道為什麼在安全性、效率和任何其他原因方面不使用這種算法。
它源於凱撒密碼。但是,不是將每個字母移動 13,而是每次將每個字元(使用電腦字元值)移動一個特定值。
所以,假設我有這句話:
My dog's name is Rover.
我有一個數字數組:
1, 4, 3, 2
我將
M
向上移動 1 個字元、y
4個字元、[space]
3個字元、2 個字元,d
然後繼續句子的其餘部分,循環遍歷數字數組。因此,該句子將轉換為N}#fpk*u!rdof$lu!Vrxfv1
.讓我們將數組稱為您的“關鍵”。只有擁有密鑰的人才能破譯消息,除非有人弄清楚了。您的數組(密鑰)中的項目越多,您就越安全,因為有人解密了您的消息。
抱歉,如果我的解釋很差。總結一下我的問題:
- 為什麼這不好(或者,沒有使用)
- 與其他加密方法相比,它是否效率低下/不安全
- 還有什麼其他需要考慮的嗎
謝謝。
編輯:如何打破 Vigenère
是的,這個密碼(正如 SEJPM 指出的那樣,是 Vigenère)容易受到頻率分析的影響,但 Vigenère 對此有點抗拒,因為**普通字母並不總是被加密成相同的密文。**不可避免的漏洞源於密鑰的重複性。
假設您的消息是 $ N $ 字元長,你的鑰匙是 $ k $ 長字元。你可能會認為通過重複鍵直到你到達 $ N $ 您獲得一些“安全單位”的字元(“它是 $ \lfloor N/k \rfloor $ 倍安全!”)。但是,如果我知道您的消息是以這種方式加密的,那麼我對您的明文了解很多。
如果我可以估計你的密鑰長度 $ k $ $ - $ 我可以,在偉大的卡西斯基的幫助下 $ - $ 然後我可以採取每一個 $ k $ th 密文字元並將它們組合在一起(例如,如果 $ k=5 $ ,將第一個、第六個、第十一個等字元組合在一起,然後將第二個、第七個、第十二個等組合成另一個塊,以此類推)。每個塊都用相同的字元加密,即您密鑰中的一個字元。在這一點上,一個簡單的頻率分析開始發揮作用。破解它並不比破解你開始使用的凱撒密碼更難。
我為每個“組”執行此操作,現在我已經恢復了您的密鑰。
很酷,您自己提出了多字母密碼的想法。但正如評論和其他答案所指出的那樣,這種密碼是不安全的,可以相當可靠地破解。說真的:僅出於娛樂或教學原因使用它。
1863 年,卡西斯基甚至知道如何猜測這個密碼的密鑰長度!這迫使您使您的密鑰更長/更難記住。
它非常有效;你可以用它快速加密文本。但這是一把雙刃劍:我也可以嘗試快速破譯它。
編輯:
我認為對問題的編輯使其成為 vigenere cipher;這使我在下面的答案無效。@galvatron 答案給出了為什麼 vigenere 不安全的合適答案。
下面的舊答案(僅適用於替換)
Baiscally 這是一個簡單的替換密碼,其中每個字母都映射到另一個字母(即移位)。您的問題的答案:
為什麼這不好(或者,沒有使用)
因為每種語言都有已知的頻率分析模式。例如,在英語中,e是最常用的字母。因此,如果對手有一段使用您的算法(足夠長)的加密文本,他可以很容易地知道您對每個字母使用的移位。
與其他加密方法相比,它是否效率低下/不安全?
是的,它不安全,很容易被統計分析破解。您也可以在最壞的情況下使用蠻力 $ 26! $ .
還有什麼其他需要考慮的嗎?
比您的算法更好的算法稱為 Vigenere 密碼,但它也是不安全的。有關更多資訊,請參閱連結 ( https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher )。