나는 이것에 대해 너무 많은 "내 물건을 알고있다"말할 것이지만, 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)에서 사용 가능한 블록 암호 모드를 이해하는 데 많은 도움을 받았습니다.
경험에 따르면 암호화 API의 최신 기술은 멍청한 놈들이 놀기에 위험한 것으로 나타났습니다. 그들에 대한 이해는 빠른 시작 - 유형 가이드에서 배울 수없는 많은 * 암호 * 지식을 요구하는 것 같습니다. –
indigoOrange - 암호화만으로는 충분하지 않음을 기억하십시오. 일반적으로 인증 된 암호화 모드가 필요합니다. 다른 정보가 없다면'CBC' 모드와 같은 다른 모드보다'EAX','GCM' 또는'CCM' 모드를 선호합니다. 그리고 당신은 거의 항상 암호화 키를 재사용하거나 하나 이상의 블록을 암호화 할 때 의미 론적 보안을 잃어 버리기 때문에 전염병처럼 'ECB'모드를 피합니다. – jww