【发布时间】:2012-06-11 16:31:14
【问题描述】:
美好的一天。
我需要教 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 能以某种方式支持这个功能。
【问题讨论】:
标签: delphi winapi encryption cryptography cryptoapi