2012-06-18 1 views
3

AES의 단일 블록을 암호화해야합니다. 나는 CBC와 다른 어떤 모드도 사용할 수 없다. 내가 본 모든 예제는 스트리밍 모드를 사용합니다.AES와 Crypto로 단일 블록을 암호화/복호화하십시오.

편집 : 괜찮 았어, 다음 방식으로했는데이 시도는 정말 싫어.

void dec(const byte *key, const byte* xblock, const byte *cipher, byte *plain) { 
    AESDecryption d; 

    try { 
     const NameValuePairs &nvp = MakeParameters("", 0); 
     d.UncheckedSetKey(key, 16, nvp); 
     d.ProcessAndXorBlock(cipher, xblock, plain); 
    } 
    catch(...) {} 
} 
+3

원하는 [ECB 모드] (http://www.cryptopp.com/docs/ref/struct_e_c_b___mode.html). –

+0

@GregS, no)) 혼자서 모드를 만들고 싶습니다. AES 프리미티브로 한 블록을 인코딩해야합니다. – Yola

+1

그것은 ECB 모드가 의미하는 것입니다 !! AES 프리미티브를 사용하여 하나의 블록을 암호화하는 것입니다. –

답변

4

ECB 모드의 AES는 단일 블록 암호화와 동일하지만 여러 블록을 공급할 수 있습니다.

CBC 모드 암호화 만 사용할 수있는 경우 모든 값이 0 인 바이트가 포함 된 (블록 크기의) IV를 사용하여 CBC 암호화의 첫 번째 블록을 사용할 수 있습니다. 카운터 (CTR) 모드 암호화 및 모든 값이 0 인 바이트 (첫 번째 블록 암호화 후 카운터 만 증가)가 포함 된 nonce도 마찬가지입니다.

Crypto ++는 상위 수준의 Crypto API 인 것처럼 보이므로 직접 AES 구현을 직접 호출하지 않는 것이 좋습니다.

+2

이 대답은 당신에게 받아 들여질 수 있습니다, Yola. 가능한 경우 답변을 수락하십시오. 그렇지 않으면 답변이 공개되지 않고 답변이없는 채로 남아 있습니다. –

관련 문제