您好。
我需要教授如何使用Windows CryptoAPI利用私有(而不是公共)密钥加密消息并使用公开密钥进行解密。这是为了向用户提供他们可以阅读但无法更改的信息。
目前的工作方式:
我获取上下文
CryptAcquireContext(@Prov, PAnsiChar(containerName), nil, PROV_RSA_FULL, 0)
生成密钥对
CryptGenKey(Prov, CALG_RSA_KEYX, CRYPT_EXPORTABLE, @key)
加密(问题在于这里。"key" - 一个密钥对,函数使用其公共部分);
CryptEncrypt(key, 0, true, 0, @res[1], @strLen, buffSize)
解密(这里也是同样的问题,它使用密钥的私有部分)
CryptDecrypt(key, 0, true, 0, @res[1], @buffSize)
感谢您的关注和帮助。
更新
是的,我可以使用数字签名和其他方法...
问题在于我需要加密一个数据库字段,并确保除我之外没有人能够更改它。只有通过我的程序才能读取此字段(直到有人反编译并获得公钥为止)。这可以使用对称密钥和数字签名来完成,但那么我将需要创建另一个字段并存储另一个密钥等等...
我真的希望我们可以以某种方式教WIN API按照我的要求执行操作。我知道我可以使用RSA实现这一点,并希望WinAPI以某种方式支持此功能。