使用openssl解密后删除PKCS7填充(C++)

l7wslrjt  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(255)

各位知识分子,

void aes_256_decrypt(unsigned char *ciphertext, int cipher_len, unsigned char *key, unsigned char *iv, unsigned char *plaintext) {
    AES_KEY aes_key;
    int len;
    EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new();
    EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv);
    EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, cipher_len);
    EVP_DecryptFinal_ex(ctx, plaintext + len, &len);
    EVP_CIPHER_CTX_free(ctx);

}

我试图用AES 256和openssl解密一个简单的文本文件,文件解密正确。但是,当打印出来时,填充仍然存在。库中是否有任何内置的方法来删除填充,以便仅保留原始内容?
我加密了一行“Hello World”,现在正在解密它。原始行的一部分显示出来了,但在接近结尾的时候有一堆填充,这些填充应该在解密后被删除。

ghhkc1vu

ghhkc1vu1#

想通了;我只是忘了在明文的末尾放一个空终止符。填充物沿着被正确地切断。

相关问题