有没有办法在 CryptoApi 中打包或解包密钥?我尝试使用正确的函数设置关键参数CRYPT_IMPORT_KEY
和CRYPT_EXPORT_KEY
,但我得到错误“params undefined”。
其他细节:
该程序是用C ++,OS:Win7,IDE:Dev-C ++编写的
主标题为windows.h
和wincrypt.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
旗帜!
答案 0 :(得分:1)
检查文档 - CryptSetKeyParam和CryptGetKeyParam
当您使用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
不需要它。