2009-05-09 15 views
2

WinCrypt.hメソッドを使用して、ハードコードされたAES-256キーを読み込む必要があります。私はunsigned char [32]に自分の鍵を持っていますが、CryptImportKeyに渡す鍵blobの正しいフォーマットを見つけることができません。すべてが私に無効なパラメータエラーを与えるようです。これを行う方法はありますか?WinCrypt&CryptImportKeyを使用したハードコーディングされたAES-256キー

(また、重要なWinCryptにIVを設定する方法です。私はすべてのことを行う方法を見ることができない)

+0

使用しているコードを投稿すると役立つ場合があります。 – Tadmas

答えて

7

はそれを解決しました。間違ったbTypeを使用し、32の代わりにkeySizeに256を使用していました。

BYTE myPrivateKey[] = 
    {1,2,3,4,5,6,7,8,9,10, 
    11,12,13,14,15,16,17,18,19,20, 
    21,22,23,24,25,26,27,28,29,30, 
    31,32}; 
BYTE myIV[] = 
    {1,2,3,4,5,6,7,8,9,10, 
    11,12,13,14,15,16}; 

struct aes256keyBlob 
{ 
    BLOBHEADER hdr; 
    DWORD keySize; 
    BYTE bytes[32]; 
} blob; 

blob.hdr.bType = PLAINTEXTKEYBLOB; 
blob.hdr.bVersion = CUR_BLOB_VERSION; 
blob.hdr.reserved = 0; 
blob.hdr.aiKeyAlg = CALG_AES_256; 
blob.keySize = 32; 
memcpy(blob.bytes, myPrivateKey, 32); 

HCRYPTKEY hKey; 
if (CryptImportKey(hCryptProv, (BYTE*)&blob, sizeof(aes256keyBlob), NULL, 0, &hKey)) 
{ 
    if(CryptSetKeyParam(hKey, KP_IV, myIV, 0)) 
    { 
     //do decryption here 
    } 
    else{/*error*/} 

    CryptDestroyKey(hKey); 
} 
else{/*error*/} 
関連する問題