2012-12-12 2 views
8

Galois field 산술 연산을 C++로 알고 있습니까? 최소한 GF (2) 및 GF (2)와 같은 경우를 다루어야합니다. 성능이 중요하므로 구현시 운영 최적화에 대한 고려가 있어야합니다.갈로 아 필드 산술 연산

일반적인 컴퓨터 라이브러리 나이 태스크 전용 전용 라이브러리를 선호합니다. 이것들이 없다면, 나는 또한 읽을만한 소스 코드를 환영 할 것이다.

+0

아마도 [crypto ++] (http://www.cryptopp.com/)에서 [GCM Mode] (http://www.cryptopp.com/wiki/GCM_Mode)를 구현하는 코드를 사용할 수 있습니다. – jxh

+1

@ user315052, 그 주석을 대답 해주십시오 : ['gcm.cpp'] (http://www.cryptopp.com/docs/ref/gcm_8cpp_source.html)에는 몇 가지 GF2 작업이 포함되어 있으며 SSE2의 사용은 성능이 고려되었습니다. 의견이 적습니다. 이 답변을 다른 답변과 함께 포함하고 싶습니다. SO 사용자가 다른 제안과 비교하는 방법에 대한 표기로 투표를 사용할 수 있습니다. – MvG

답변

1

아마도 GCM Mode을 구현하는 코드를 crypto++ (특히 gcm.cpp)에 사용할 수 있습니다. Crypto ++는 많은 Crypto 체계를 구현하는 무료 C++ 라이브러리입니다. GCM은 Galois Field 산술 연산을 사용합니다.

license에 따르면 라이브러리 자체는 저작권이 있지만 개별 소스 파일은 공개 도메인입니다.

+0

방금 ​​Galylis 필드 곱셈을 훨씬 효율적으로 수행하기 위해 [carry-less 곱셈을위한 기계 명령어] (https://en.wikipedia.org/wiki/CLMUL_instruction_set) ('PCLMULQDQ'및 friends라고 함)를 사용할 수 있음을 알게되었습니다 다른 방법보다. 또한 암호화 ++가 해당 지침을 지원하는 라이브러리 중 하나임을 알았습니다. – MvG

0

NTL : http://www.shoup.net/ntl/이라는 라이브러리가 있습니다. 소스 코드가 "읽기 쉽지"는 않지만.

+0

[GF2E] (http://www.shoup.net/ntl/doc/GF2E.txt) 모듈은 임의의 e에 대해 GF (2^e)를 구현해야합니다. 그러나 임의의 차수 다항식에서 작동하는 것으로 보입니다. 따라서 16 또는 32 개의 계수를 갖는 다항식의 간단한 기계 정수 대신 GMP를 기반으로 할 가능성이 높습니다. 그렇다면 (여전히 이것을 검증 할 필요가있다), 이것은 메모리와 CPU 모두의 자원 낭비처럼 보인다. – MvG

7

위키 백과 문서의 에 대한 링크가 Finite field arithmetic에 있습니다.

언뜻보기에 코드는 주석없이 거의 완벽하게 보이지만 구조화되고 아마도 이해할 수있는 방식으로 작성되었습니다. 그러나 인라인 함수의 사용은 제한적이며 일반적으로 이론적 인 수학의 직접적인 표기법이 계산적 단축키를 설명하는 것보다 중요하다고 여겨지는 것처럼 보입니다. 여기에 완전성을 위해 목록으로 표시되어 있으므로 자신의 의견을 정리하고 의견을 표명 할 수 있으며 이에 따라 투표하거나 의견을 말하십시오.

0

대수 숫자를 찾고 난 this answer을 우연히 발견하여 Givaro을 제안했습니다. 그리고 그것을 보면 GF ( p k) 산술도 발견했습니다. documentation은 얇지 만 thesources은 많은 코드와 노력을 보여줍니다. 세부 사항을 아직 파헤 치지는 못했지만, 여기에 내 목록에 포함시킬 생각입니다.