我正試圖編寫一個需要大量密碼強度僞隨機字節的應用程序。用於Python的快速RC4密碼流?
RC4密碼將是理想的;它在概念上是輕量級且簡單易懂的。所以,我得到了這個規範,並用Python編寫了一個RC4算法。
它的工作原理與預期的完全相同,但它的糖蜜速度很慢。在我的Core i7 2.2GHz上,我只能算出約1MB/sec的算法。
顯然,Python的解釋性質並不是最適合這類任務的。我的問題是我不熟悉C編碼 - 我用C完成的最好的一些是Hello World的東西,還有一些文件讀寫的實驗。無論哪種方式,我當然不能用C來使用Python-C API。
我確實知道.NET/C#,並且我在Windows上用C#編寫了相同的算法,並且我能夠輕鬆地從中獲得超過60MB /秒的性能。因此,.NET的CLR更加優化。但是,Python應用程序的目標平臺是Unix/Linux。
理想情況下,我不想經過大量的中間層才能獲得優化的RC4密碼到Python應用程序中。
由於RC4依賴於狀態,所以理想情況下我會用類來做這件事(這就是我用Python實現的方式。)所以,下面是我想要做的一小段代碼:
rc4 = RC4Encrypter()
rc4.seed(myKey) # seed the RC4 algorithm with bytes from string myKey
rc4.getRC4Bytes(1048576) # get the next 1MB of RC4 cryptostream bytes as a binary string
rc4.encryptWithRC4(myString) # encrypt myString's bytes with RC4 bytes using xor and return
有什麼建議嗎?我很想學習C語言,但現在對於這個簡單的項目來說,這是一個很大的學習曲線。
你爲什麼不找已經用C語言編寫的RC4加密算法,並從Python中調用它呢? http://www.governmentsecurity.org/forum/topic/28052-rc4-file-encryption-utility/ –
會是一個不錯的主意,除非我不知道足夠的C編寫必要的膠水代碼來包裝RC4的東西在Python模塊中。實際上我知道C足夠寫一個RC4流密碼 - 我寫了一個簡單的從/ dev/urandom中以一定數量的字節自己創建的,然後開始將僞隨機比特吐出到標準輸出。但是我不知道如何用C來包裝它。我需要花更多的時間在C上,然後才能夠做到這一點。 ;-) – fdmillion