많은 수의 암호 강도 난수 바이트가 필요한 앱을 작성하려고합니다.파이썬을위한 빠른 RC4 암호 스트림?
RC4 암호가 이상적입니다. 가볍고 개념적으로 이해하기 쉽습니다. 그래서, 스펙을 얻었고 파이썬에서 RC4 알고리즘을 작성했습니다.
정확히 예상대로 작동하지만 당밀로 느립니다. 내 코어 i7 2.2GHz에서 약 1MB/초의 알고리즘 밖에 얻을 수 없습니다.
분명히 파이썬의 해석 된 특성이 이런 종류의 작업에 적합하지 않습니다. 내 문제는 내가 C 코딩에 정통하지 않다는 것이다. C로 해낸 최고는 Hello World와 파일 읽기 및 쓰기 실험이다. 어쨌든, 나는 확실히 Python-C API를 사용하기에 C로는 충분하지가 않다.
.NET/C#을 알고 있고 C#의 Windows에 동일한 알고리즘을 작성 했으므로 쉽게 60MB/초 이상 사용할 수있었습니다. 따라서 .NET의 CLR은 훨씬 더 최적화되었습니다. 그러나 Python 응용 프로그램의 대상 플랫폼은 Unix/Linux입니다.
이상적으로, 저는 최적화 된 RC4 암호를 파이썬 응용 프로그램에 적용하기 위해 중간 계층을 거치지 않아도된다는 것을 이상적으로 생각합니다.
RC4는 상태에 따라 다르므로 클래스를 사용하여이 작업을 수행 할 수 있습니다. (파이썬 전용 구현으로이 작업을 수행 한 방법입니다.) 따라서 여기에 내가 할 수있는 작업에 대한 작은 내용이 있습니다.
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 암호를 발견하지 않습니다을 확인하고, 파이썬에서 호출? http://www.governmentsecurity.org/forum/topic/28052-rc4-file-encryption-utility/ –
RC4 자료를 감싸기 위해 필요한 글루 코드를 작성하기에 충분하지 않은 것을 제외하고는 좋은 아이디어일까요? 파이썬 모듈 내부. 실제로 RC4 스트림 암호를 작성하기에 충분한 C를 알고 있습니다. 특정 바이트 수의/dev/urandom에서 단순히 시드를 작성한 다음 의사 임의 비트를 stdout으로 뱉어 내기 시작합니다. 그러나 나는 C로 그것을 감쌀 수있는 방법을 모른다. 나는 그것을하기에 충분하기 전에 C에서 더 많은 시간을 할애해야 할 것이다. ;-) – fdmillion