CryptoApi包装和解包密钥

时间:2013-06-30 09:23:48

标签: windows cryptography cryptoapi

有没有办法在 CryptoApi 中打包或解包密钥?我尝试使用正确的函数设置关键参数CRYPT_IMPORT_KEYCRYPT_EXPORT_KEY,但我得到错误“params undefined”。

其他细节: 该程序是用C ++,OS:Win7,IDE:Dev-C ++编写的 主标题为windows.hwincrypt.h

当我编译时,我收到错误“CRYPT_EXPORT_KEY(或CRYPT_IMPORT_KEY)未声明”。

我编写的代码:

flags = CRYPT_ENCRYPT | CRYPT_EXPORTABLE | CRYPT_DECRYPT | CRYPT_EXPORT_KEY;
//set the above permission to the session key "dkey"    
CryptSetKeyParam(dKey,KP_PERMISSIONS,(BYTE*)&flags,0);

从评论中更新:

它编译!但程序终止时出现错误NTE_BAD_FLAGS。这是因为CRYPT_EXPORT_KEY旗帜!

1 个答案:

答案 0 :(得分:1)

检查文档 - CryptSetKeyParamCryptGetKeyParam

当您使用KP_PERMISSIONS时,有效的标志集是

CRYPT_ARCHIVE
CRYPT_DECRYPT
CRYPT_ENCRYPT
CRYPT_EXPORT
CRYPT_EXPORT_KEY
CRYPT_IMPORT_KEY
CRYPT_MAC
CRYPT_READ
CRYPT_WRITE

CRYPT_EXPORTABLE不在此列表中。

如果您查看CryptGenKey的文档,CRYPT_EXPORTABLE是您在创建密钥时使用的标记,以便以后可以导出。 CryptSetKeyParam不需要它。