Получение ошибки при расшифровке строки, зашифрованной AES, в Cpp ⇐ C++
Получение ошибки при расшифровке строки, зашифрованной AES, в Cpp
Когда я расшифровал строку с помощью функции дешифрования, я получил несколько избыточных символов. На самом деле этот код написан для шифрования и дешифрования необработанных байтов.
Вот мой код.
Сценарий шифрования AES Python:
импортировать систему из Crypto.Cipher импортировать AES из панели импорта Crypto.Util.Padding из Crypto.Random импорт get_random_bytes импортировать хеш-библиотеку def encrypt_string(открытый текст, ключ): iv = 16 * b'\x00' шифр = AES.new(hashlib.sha256(key).digest(), AES.MODE_CBC, iv) ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size)) вернуть зашифрованный текст КЛЮЧ = get_random_bytes(16) пытаться: открытый текст = ввод(">> ") кроме: print("Требуется входная строка!") sys.exit() зашифрованный текст = encrypt_string (открытый текст, КЛЮЧ) print('AESkey[] = { 0x' + ', 0x'.join(hex(x)[2:] for x в KEY) + ' };') print('payload[] = { ' + ', '.join(str(x) for x в зашифрованном тексте) + ' };') Функция расшифровки CPP:
int AESDecrypt(char * payload, unsigned int payload_len, char * key, size_t keylen) { ХКРИПТПРОВ hProv; HCRYPTHASH hHash; ХКРИПТКЕЙ hKey; if (!CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)){ вернуть -1; } if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)){ вернуть -1; } if (!CryptHashData(hHash, (BYTE*)key, (DWORD)keylen, 0)){ вернуть -1; } if (!CryptDeriveKey(hProv, CALG_AES_256, hHash, 0,&hKey)){ вернуть -1; } if (!CryptDecrypt(hKey, (HCRYPTHASH) NULL, 0, 0, полезная нагрузка, &payload_len)){ вернуть -1; } CryptReleaseContext(hProv, 0); CryptDestroyHash(hHash); CryptDestroyKey(hKey); вернуть 0; }
Когда я расшифровал строку с помощью функции дешифрования, я получил несколько избыточных символов. На самом деле этот код написан для шифрования и дешифрования необработанных байтов.
Вот мой код.
Сценарий шифрования AES Python:
импортировать систему из Crypto.Cipher импортировать AES из панели импорта Crypto.Util.Padding из Crypto.Random импорт get_random_bytes импортировать хеш-библиотеку def encrypt_string(открытый текст, ключ): iv = 16 * b'\x00' шифр = AES.new(hashlib.sha256(key).digest(), AES.MODE_CBC, iv) ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size)) вернуть зашифрованный текст КЛЮЧ = get_random_bytes(16) пытаться: открытый текст = ввод(">> ") кроме: print("Требуется входная строка!") sys.exit() зашифрованный текст = encrypt_string (открытый текст, КЛЮЧ) print('AESkey[] = { 0x' + ', 0x'.join(hex(x)[2:] for x в KEY) + ' };') print('payload[] = { ' + ', '.join(str(x) for x в зашифрованном тексте) + ' };') Функция расшифровки CPP:
int AESDecrypt(char * payload, unsigned int payload_len, char * key, size_t keylen) { ХКРИПТПРОВ hProv; HCRYPTHASH hHash; ХКРИПТКЕЙ hKey; if (!CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)){ вернуть -1; } if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)){ вернуть -1; } if (!CryptHashData(hHash, (BYTE*)key, (DWORD)keylen, 0)){ вернуть -1; } if (!CryptDeriveKey(hProv, CALG_AES_256, hHash, 0,&hKey)){ вернуть -1; } if (!CryptDecrypt(hKey, (HCRYPTHASH) NULL, 0, 0, полезная нагрузка, &payload_len)){ вернуть -1; } CryptReleaseContext(hProv, 0); CryptDestroyHash(hHash); CryptDestroyKey(hKey); вернуть 0; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение