0

我正在尝试使用 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 );

谢谢!

4

1 回答 1

0

我找到了一个解决方案,使用 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);

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

于 2019-11-27T05:57:12.610 回答