16バイトキーで動的長さのテキストをDESで暗号化しようとしていますが、キーとテキストのブロックサイズに問題があります。私はopensslライブラリを使用していますDES暗号化用。 16バイトの長さのキーを使用するにはどうしたらいいですか?ここで16バイトキーのC++ DES暗号化
私の例:
char * Encrypt(char Key, char *Msg, int size) {
static char* Res;
DES_cblock Key2;
DES_key_schedule schedule;
Res = (char *) malloc(size);
memcpy(Key2, Key, 8);
DES_set_odd_parity(&Key2);
DES_set_key_checked(&Key2, &schedule);
unsigned char buf[9];
buf[8] = 0;
DES_ecb_encrypt((DES_cblock ) &Msg, (DES_cblock ) &buf, &schedule, DES_ENCRYPT);
memcpy(Res, buf, sizeof(buf));
return (Res);
}
int main(int argc, char const *argv[]) {
char key[] = "password";
char clear[] = "This is a secret message";
char *encrypted;
encrypted = (char *) malloc(sizeof(clear));
printf("Clear text\t : %s \n",clear);
memcpy(encrypted, Encrypt(key, clear, sizeof(clear)), sizeof(clear));
printf("Encrypted text\t : %s \n",encrypted);
return 0;
}
表示するコードにメモリリークがあることに注意してください。あなたは 'Encrypt'関数で割り当てたメモリをどこから解放しますか? –
AESは16バイトの鍵を受け入れますか? –
AESは、128,192、および256ビットのキーを許可します。 – zaph