2010-06-28 4 views
4

거기에는 noop에 대한 지침이 없습니다. 또는 어쨌든 나는 아무 것도 발견하지 못했습니다. 내가하고 싶은 것은 내가 다른 AES 암호기로 생성 한 uchars의 배열을 해독하는 것이다. 어디서부터 시작하겠습니까? 나는 도서관을 건설하고 그랜드를 연결시켜 놓았다. 무엇인가를 설정해야합니까, 아니면 배열에서 함수를 호출 할 수 있습니까 (그렇다면 어떤 함수입니까?)?Crypto ++ AES 암호 해독 방법?

나는이 물건을 알고있는 누군가로부터 도움을 얻었습니다.

감사

다음
+2

경험에 따르면 암호화 API의 최신 기술은 멍청한 놈들이 놀기에 위험한 것으로 나타났습니다. 그들에 대한 이해는 빠른 시작 - 유형 가이드에서 배울 수없는 많은 * 암호 * 지식을 요구하는 것 같습니다. –

+0

indigoOrange - 암호화만으로는 충분하지 않음을 기억하십시오. 일반적으로 인증 된 암호화 모드가 필요합니다. 다른 정보가 없다면'CBC' 모드와 같은 다른 모드보다'EAX','GCM' 또는'CCM' 모드를 선호합니다. 그리고 당신은 거의 항상 암호화 키를 재사용하거나 하나 이상의 블록을 암호화 할 때 의미 론적 보안을 잃어 버리기 때문에 전염병처럼 'ECB'모드를 피합니다. – jww

답변

3

나는 이것에 대해 너무 많은 "내 물건을 알고있다"말할 것이지만, AES로 문자열을 암호화/해독하기 위해 함께 사용한 테스트 코드는 다음과 같습니다. 다른 데이터를 사용하도록 확장하면 너무 어렵지 않습니다. 이 작업을하는 동안

string output; 
CTR_Mode<AES>::Encryption encrypt((const byte*)key,AES::DEFAULT_KEYLENGTH,(const byte*)iv); 
StringSource(plaintext, true, new StreamTransformationFilter(encrypt, new StringSink(output))); 
cout << "Encrypted: " << output << endl; 

string res; 
CTR_Mode<AES>::Decryption decrypt((const byte*)key,AES::DEFAULT_KEYLENGTH,(const byte*)iv); 
StringSource(output, true, new StreamTransformationFilter(decrypt, new StringSink(res))); 
cout << "Decrypted: " << res << endl; 

, 나는 암호화 ++ 테스트 프로그램이 큰 도움이 될 ("cryptest"라는으로 VisualStudio 프로젝트)의 소스 코드를 발견했다. 처음에는 읽기가 다소 힘들었지 만 작업 할 때 더 쉽게 이해할 수 있습니다. 위키 백과 ( http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation)에서 사용 가능한 블록 암호 모드를 이해하는 데 많은 도움을 받았습니다.