2011-09-29 5 views
0

AES 암호화의 2 개로 분리 된 버전처럼 작아야합니다. 내가 봤 거든 AES - Advanced Encryption Standard (소스 코드),하지만 코드는 Windows 용으로 작성된 것 같아 멀티 플랫폼 하나가 필요합니다.AES 암호화 코드

Linux에서 알 수없는 사용 된 기능에 대한 알려진 AES encrpytion의 다른 작은 버전이 있습니까?

내 컴파일러는 그 알 수없는 함수는 말한다 :

./aes/AES.cpp:198:17: error: ‘_rotl’ was not declared in this scope 
./aes/AES.cpp:608:20: error: ‘_rotr’ was not declared in this scope 

또한 가지고 : 것과

./aes/AES.cpp:764:34: error: ‘memset’ was not declared in this scope 
./aes/AES.cpp:770:36: error: ‘memcpy’ was not declared in this scope 

알려진해야한다, 그 포함 고려 :

#include "AES.hpp" 
#include <assert.h> 
#include <stdio.h> 
#include <cstdio> 
#include <cstdlib> 
#include <fstream> 
#include <iostream> 
+0

'memset'과'memcpy'를 얻기 위해서는''을 포함시켜야합니다. – avakar

+0

회전 내장 함수는 C 코드 또는 플랫폼에 적합한 대체 코드로 교체하면됩니다. –

+0

** 키 관리 문제를 먼저 해결 ** : http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx –

답변

0

AES에 대한 참조 구현은 여기에서 확인할 수 있습니다. http://www.efgh.com/software/rijndael.htm. 주 소스 파일에는 <stdio.h> 만 포함되지만 그 파일에는 의존하지 않습니다. 어떤 플랫폼에서든 문제없이 사용할 수 있습니다.

4

를 사용하여 A를 cryptlib 또는 OpenSSL과 같이 잘 테스트 된 암호화 라이브러리가 실행되었습니다. 검색 결과의 40 번째 페이지에서 찾을 수 있습니다. 수행중인 작업에 따라 AES보다는 직접 상위 레벨 구조를 사용해야합니다.

+0

잘 그냥 암호화가 필요하고, 아무것도 좋아하지 않아. 정말 진지한 건 없어요. 그것은 모양을 유지하기 위해 내가하고있는 작은 프로젝트 일뿐입니다. 그래서 나는 좋지 않을지라도 작은 것을 좋아합니다. – Sim

+2

"실제로 체형을 유지하는 것"이라면서 다른 누구에게도 이것을 풀어주지는 않을지라도, 그런 식으로 반쯤하는 일을하면 여전히 도움이되지 않습니다. 크고 작은 라이브러리를 원한다면,'libmcrypt' 또는 그와 유사한 것을 체크 아웃하십시오. –

0

이 해당 오류에 대한 구글 검색에서 높은 등장 이후는, 여기에 내가 ia32intrin.h 부족 64에 CentOS 시스템에 컴파일을 거부 한 내 프로그램에 무슨 짓을했는지 : avakar로

#if !defined(_rotr) && (defined(__i386__) || defined(__x86_64__)) 
static inline unsigned int _rotr(unsigned int n, const int count) { 
asm volatile (
    "rorl %1, %0;" 
    : "=r" (n) 
    : "nI" (count), "0" (n) 
); 
return n; 
} 
#endif 

언급 memset과 memcpy를 얻으려면 cstring 또는 string.h를 포함시켜야합니다.

_rotl의 코드는 opcode 니모닉을 제외하고는 동일하며, roll이됩니다.

관련 문제