对hash值的数字签名和验证 ——C语言实例
下面的程序首先计算一串数据的hash值并对hash值进行数字签名,对其数字签名进行验证。签名者使用私钥对hash值进行签名,将自己的公钥发布以便他人验证数字签名。这个实例执行步骤以及用的的API如下:
1 使用
CryptAcquireContext 获取加密服务提供商的句柄(handle);
2 使用
CryptGetUserKey 获取用户的签名密钥对;
3 使用
CryptExportKey 创建一个公钥博客(PUBLICKEYBLOG),用以存放签名者的公钥,PUBLICKEYBLOG将在签名验证时用到;
4 使用
CryptCreateHash 创建一个hash对象;
5 使用
CryptHashData 对待签名的数据做hash运算;
6 使用
CryptSignHash 对hash值做签名运算;
7 使用
CryptDestroyHash 销毁hash对象。
签名验证:
1 使用
CryptImportKey 从PUBLICKEYBLOG中取得签名验证的公钥;