发布时间:2010-3-15 15:34
分类名称:PKI
Base Cryptography Functions
Base cryptographic functions provide the most flexible means of developing cryptography applications. All communication with a cryptographic service provider (CSP) occurs through these functions.
Base cryptographic functions are in the following broad groups:
l Service Provider Functions
l Key Generation and Exchange Functions
l Object Encoding and Decoding Functions
l Da
l Hash and Digital Signature Functions
以下只是我的注释,详细信息见MSDN。
Service Provider Functions
以下俩函数是关于Context(上下文)的
CryptAcquireContext
获取特定CSP中的当前用户的密钥容器的句柄。当然根据其参数不同,它还可以删除创建容器等操作。
Flags : CRYPT_VERIFYCONTEXT, CRYPT_NEWKEYSET, CRYPT_DELETEKEYSET
CryptReleaseContext
释放句柄,类似于CloseHandle的功能,有引用计数的功能。
以下三个函数和注册表相关
CryptEnumProviderTypes
CryptGetDefaultProvider
CryptEnumProviders 枚举系统中的CSP。系统CSP信息在注册表中保存,路径为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\ Provider。同样,我们可以利用注册表函数来写个枚举Csp的函数。
以下用来获取和设置CSP信息的。
CryptGetProvParam
获取 管理员PIN,当前Csp上下文容器名称,枚举Csp支持的算法,枚举容器名称,实现类型(硬件、软件、硬件和软件、可移动设备、未知),获取当期Csp名称,当前Csp类型,当前Csp版本,
CryptSetProvParam
类似CryptGetProvParam
Key Generation and Exchange Functions
CryptDeriveKey
用来生成session key(此密钥为对称密钥,用来做加密大量数据用的),此函数能保证,通过同样的Csp和同样的算法,使用同样的数据(如密码等)能生成相同的session key。与CryptGenKey不同,CryptGenKey生成的是一个随机key。
生成的Key handle通常传入CryptEncrypt函数来加密文件。
CryptDuplicateKey
复制key
CryptExportKey
1. Export PUBLICKEYBLOB 无需加密传输,因为本身就是公开的
2. Export PRIVATEKEYBLOB 用Session Key来加密传输
3. Export SESSIONKEYBLOB 用key exchange public key 来加密传输,这样只有目标能够解密该文件。
CryptImp
1. Imp
2. Imp
3. Imp
CryptGenKey
用来产生随机密钥(对),
CryptGenRandom
创建随机数
CryptGetUserKey
获取交换密钥对或签名密钥对的句柄,仅仅适用于与某CSP关联的容器存在。
CryptGetKeyParam
CryptSetKeyParam
CryptEncrypt
加密数据。可以使用对称密钥和非对称密钥加密。密钥句柄由CryptGenKey, CryptImp
CryptDecrypt
当使用的是非对称密钥对时,通常使用key pair 中的private key 解密数据。