C语言 MBED TLS 对称密钥包装



我正在尝试使用 MBED TLS 加密函数来解开一个密钥,该密钥已使用对称密钥使用 AES-128 密钥包装加密,我有。

我是加密新手,我的理解是密钥包装/解包与加密/解密不同。这是对的吗?

此页面上列出了一些示例,但 aes 示例执行解密而不是密钥解包,并且包装示例使用公钥而不是对称密钥。

是否有一些使用 MBED TLS 使用 AES-128 加密进行密钥解包的参考或示例?

我尝试简单地使用解密功能,结果没有得到正确的数据。见下文。

//Initialise AES context
mbedtls_aes_init( &aes_ctx );
//Set-up the context
mbedtls_aes_setkey_dec( &aes_ctx, AES_key, 128 );
//Process the encrypted data in blocks of 16 bytes
for(i = 0; i< encryptedDataLength; i+= 16)
{
mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_DECRYPT, pEncryptedData + i, pPlainValue + i); 
}
//Free the context
mbedtls_aes_free( &aes_ctx );

谢谢!

我使用 nist_kw 界面找到了解决方案。

//Initialise key-wrap context
mbedtls_nist_kw_init(&kw_ctx);
//Set up the context
mbedtls_nist_kw_setkey(&kw_ctx, MBEDTLS_CIPHER_ID_AES, AES_key, 128, 0);
//Process the encrypted data
mbedtls_nist_kw_unwrap(&kw_ctx, MBEDTLS_KW_MODE_KW, 
pEncryptedData, encrypted_length,
pPlainValue, &decrypted_length,
encryptedDataLength);
//Free the context
mbedtls_nist_kw_free(&kw_ctx);

这为我正确解密了数据。谢谢你成为我的橡皮鸭!

最新更新