문제

나는 좋은 공개 도메인을 사용했습니다 C++ DES 구현 이전에는 임베디드 시스템을 위한 간단하고 기본적이며 빠른 암호화가 필요합니다.

깨지지 않을 필요는 없지만 일반 해커를 막아야 합니다(예: 돈이나 신원 도용에 사용할 수 있는 것은 없지만 메모리 카드에 전송된 기타 개인 정보는 분실되거나 다른 사람의 손에 들어갈 수 있음). ).

이 프로세서의 메모리가 제한되어 있기 때문에 개별 청크(512바이트 이하)로 인코딩할 수 있는 것을 선호합니다.

이 프로젝트는 오픈 소스가 아니며 라이브러리를 사용하지 않을 것입니다. 라이브러리는 옵션을 더 제한합니다. 공개 도메인이 가장 좋지만 BSD/apache/etc는 아마도 허용될 수 있습니다.

나는 (모든 사람이 그래야 하듯이) 내 자신의 롤을 굴리는 것을 주저합니다.

-아담

도움이 되었습니까?

해결책

난독화를 찾고 있다면 비밀 상수를 사용하는 XOR은 찾을 수 있는 것만큼 작은 구현입니다.가장 일반적인 영어 문자를 찾기 위한 빈도 분석에 취약하기 때문에 깨지는 것도 쉽지 않습니다.

더 강력한 알고리즘이 필요하다면 작고 ​​빠른 복어를 살펴보는 것이 좋습니다.여전히 테이블을 위한 메모리가 필요하지만 애플리케이션에서는 작동할 수 있기를 바랍니다.

Bruce Schneier는 특허를 거부하면서 Blowfish 알고리즘을 공개 도메인에 명시적으로 배치했습니다.다음에서 C로 구현한 내용을 얻을 수 있습니다(및 기타 구현도 포함). 그의 사이트.이 소스에는 저작권 표시가 없습니다.소스 코드도 공개 도메인에 있는 것으로 의심되지만 좀 더 확인이 필요할 수 있습니다.

다른 팁

RC4 간단하고 빠릅니다.

C++ DES 구현을 발표한 사람이 또한 C Rijndael 암호화 알고리즘 - 그의 웹사이트를 좀 더 둘러봤어야 했는데, 작은 암호화 알고리즘 (여기 학술 논문) 또한 C 구현 공간이 매우 작습니다.

복어 보기에도 좋고 보안 측면에서도 이 세 가지 중 최고일 것 같습니다.

TEA(작은 코드 및 메모리 공간)부터 시작하겠습니다. 그러나 필요한 경우 나중에 다른 알고리즘으로 이동할 수 있도록 이를 래핑합니다.초기 구현에는 눈에 띄는 약점이 있지만 이 프로젝트의 경우 과잉일 수도 있습니다.

-아담

당신은 의사 난수 생성기 (PRNG)를 사용하여 반복 가능한 단어 시퀀스를 생성한 다음 데이터 스트림의 해당 단어와 XOR합니다.(송신기와 수신기는 의사 난수 시퀀스를 생성하는 데 사용되는 매개변수를 미리 알아야 합니다.)

이 접근 방식은 깨지지 않는 것은 아니지만 XOR에 상수를 사용하는 것보다 한 단계 더 발전한 것입니다. PRNG는 구현이 매우 간단하며 일반적으로 각 단어에 대해 하나의 곱셈과 모듈로 연산으로 구성됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top