zoukankan      html  css  js  c++  java
  • API标准

    密码引擎API的主要标准和规范包括:

    1. 微软的Crypto API
    2. RSA公司的PKCS#11标准
    3. 中国商用密码标准:GM/T 0016-2012 智能密码钥匙密码应用接口规范GM/T 0018-2012密码设备应用接口规范等

    一、Crypto API

    Crypto API作为一部分 Microsoft Windows 提供的应用程序编程接口(API) ,提供了一组允许应用程序在对用户的敏感私钥数据提供保护时,以灵活的方式对数据进行加密或数字签名的函数,而实际的加密操作是由称为加密服务提供程序 (CSP) 的独立模块执行。

    Crypto API函数使用“加密服务提供者”(CSP) 完成数据加密、解密以及密钥的存储管理、所有的CSP都是相互独立的模块。CSP与应用程序之间的关系类似于Windows GDI模型,CSP就类似于图形硬件驱动程序。

    Crypto API使用两种密钥:会话密钥与公共/私人密钥对。会话密钥使用相同的加密和解密密钥,这种算法较快,但必须保证密钥的安全传递。公共/私人密钥对使用一个公共密钥和一个私人密钥,私人密钥只有专人才能使用,公共密钥可以广泛传播。如果密钥对中的一个用于加密,另一个一定用于解密。公共/私人密钥对算法很慢,一般只用于加密小批数据,例如用于加密会话密钥。

    Crypto API支持两种基本的编码方法:流式编码和块编码。流式编码在明码文本的每一位上创建编码位,速度较快,但安全性较低。块编码在一个完整的块上(一般为64位)工作,需要使用填充的方法对要编码的数据进行舍入,以组成多个完整的块。这种算法速度较慢,但更安全。

    Crypto API运行的环境。

    首先需要Crypt32.lib,将它加到project>setting->link下面,当然你也可以在程序中用#pragma comment (lib, "crypt32.lib")加入。
      在程序开头,你要加入两个头文件 windows.h  Wincrypt.h,和一个#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)

    Crypto API函数

    基本加密函数

    PROV_RSA_FULL

    RSA

    RSA

    RC2
    RC4

    MD5
    SHA

    PROV_RSA_SIG

    none

    RSA

    none

    MD5
    SHA

    PROV_RSA_SCHANNEL

    RSA

    RSA

    RC4
    DES
    Triple DES

    MD5
    SHA

    PROV_DSS

    DSS

    none

    DSS

    MD5
    SHA

    PROV_DSS_DH

    DH

    DSS

    CYLINK_MEK

    MD5
    SHA

    PROV_DH_SCHANNEL

    DH

    DSS

    DES
    Triple DES

    MD5
    SHA

    PROV_FORTEZZA

    KEA

    DSS

    Skipjack

    SHA

    PROV_MS_EXCHANGE

    RSA

    RSA

    CAST

    MD5

    PROV_SSL

    服务提供者函数:

    CryptAcquireContext

    获得指定CSP 的密钥容器的句柄

    CryptContextAddRef

    对HCRYPTPROV 句柄增加一个应用计数

    CryptEnumProviders

    枚举当前计算机中的CSP

    CryptEnumProviderTypes

    枚举CSP 的类型

    CryptGetDefaultProvider

    对于指定CSP 类型的却省CSP

    CryptGetProvParam

    得到一个CSP 的属性

    CryptInstallDefaultContext

    安装先前得到的HCRYPTPROV 上下文作为当前却省的上下文

    CryptReleaseContext

    释放由CryptAcquireContext 得到的句柄

    CryptSetProvider 和

    CryptSetProviderEx

    为指定CSP 类型指定一个却省的CSP

    CryptSetProvParam

    指定一个CSP 的属性

    CryptUninstallDefaultContext

    删除先前由CryptInstallDefaultContext 安装的却省上下文

    密钥的产生和交换函数:

    CryptAcquireCertificatePrivateKey

    对于指定证书上下文得到一个HCRYPTPROV 句柄和dwKeySpec

    CryptDeriveKey

    从一个密码中派生一个密钥

    CryptDestoryKey

    销毁密钥

    CryptDuplicateKey

    制作一个密钥和密钥状态的精确复制

    CryptExportKey

    把CSP 的密钥做成BLOB 传送到应用程序的内存空间中

    CryptGenKey

    创建一个随机密钥

    CryptGenRandom

    产生一个随机数

    CryptGetKeyParam

    得到密钥的参数

    CryptGetUserKey

    得到一个密钥交换或签名密钥的句柄

    CryptImportKey

    把一个密钥BLOB 传送到CSP中

    CryptSetKeyParam

    指定一个密钥的参数

    编码/解码函数:

    CryptDecodeObject

    对lpszStructType 结构进行解码

    CryptDecodeObjectEx

    对lpszStructType 结构进行解码,此函数支持内存分配选项

    CryptEncodeObject

    对lpszStructType 结构进行编码

    CyptEncodeObjectEx

    对lpszStructType 结构进行编码,此函数支持内存分配选项

    数据加密/解密函数

    CryptDecrypt

    使用指定加密密钥来解密一段密文

    CryptEncrypt

    使用指定加密密钥来加密一段明文

    CryptProtectData

    执行对DATA_BLOB 结构的加密

    CryptUnprotectData

    执行对DATA_BLOB 结构的完整性验证和解密

    哈希和数字签名函数:

    CryptCreateHash

    创建一个空哈希对象

    CryptDestoryHash

    销毁一个哈希对象

    CryptDuplicateHash

    复制一个哈希对象

    CryptGetHashParam

    得到一个哈希对象参数

    CryptHashData

    对一块数据进行哈希,把它加到指定的哈希对象中

    CryptHashSessionKey

    对一个会话密钥进行哈希,把它加到指定的哈希对象中

    CryptSetHashParam

    设置一个哈希对象的参数

    CryptSignHash

    对一个哈希对象进行签名

    CryptVerifySignature

    校验一个数字签名

    证书和证书库函数:

    CertAddStoreToCollection

    在证书库中增加一个证书

    CertCloseStore

    关闭一个证书库句柄

    CertControlStore

    如果证书缓冲区和证书本身内容不相符时,允许给应用程序发一个通知

    CertDuplicateStore

    通过增加引用计数来复制证书库句柄

    CertEnumPhysicalStore

    对于指定系统库枚举物理库

    CertEnumSystemStore

    枚举所有可用的系统库

    CertEnumSystemStoreLocation

    枚举可用系统库的所有位置

    CertGetStoreProperty

    得到一个库的属性

    CertOpenStore

    使用指定库类型来打开证书库

    CertOpenSystemStore

    打开一个系统证书库

    CertRegisterPhysicalStore

    在一个注册系统库里增加一个物理库

    CertRegisterSystemStore

    注册一个系统库

    CertRemoveStoreFromCollection

    从一个库集合里删除证书库

    CertSaveStore

    保存证书库

    CertSetStoreProperty

    设置证书属性

    CertUnregisterPhysicalStore

    从系统库中删除一个物理库

    CertUnregisterSystemStore

    反注册一个指定系统库

    维护函数:

    CertAddSerializeElementToStore

    在库中增加一系列证书或CRL

    CertCreateContext

    从编码字节中创建指定上下文

    CertEnumSubjectInSortedCTL

    在CTL 库中枚举信任主题

    CertFindSubjectInCTL

    在CTL 中寻找指定主题

    CertFindSubjectInSortedCTL

    在分类CTL 中寻找指定主题

     证书函数:

    CertAddCertificateContextToStore

    在证书库里增加一个证书上下文

    CertAddCertificateLinkToStore

    在证书库里增加一个对不同库里的证书上下文的链接

    CertAddEncodedCertificateToStore

    把编码证书转换成证书上下文并且把它加到证书库里

    CertCreateCertificateContext

    从编码证书中创建一个证书上下文。但这个上下文并不放到证书库里

    CertCreateSelfSignCertificate

    创建一个自签名证书

    CertDeleteCertificateFromStore

    从证书库里删除一个证书

    CertDuplicateCertificate

    通过增加引用计数来复制证书上下文

    CertEnumCertificateInStore

    在证书库里枚举证书上下文

    CertFindCertificateInStore

    在证书库里寻找证书上下文

    CertFreeCertificateContext

    释放一个证书上下文

    CertGetIssuerCertificateFromStore

    在证书库里得到指定主题证书的发行者

    CertGetSubjectCertificateFromStore

    获得主题证书的上下文

    CertGetValidUsages

    返回所有证书的用法

    CertSerializeCertificateStoreElement

    串行化编码证书的证书上下文

    CertVerifySubjectCertificateContext

    使用发行者来验证主题证书

    CryptUIDlgViewContext

    显示证书、CRL 或CTL

    CryptUIDlgSelectCertificateFromStore

    从指定库中显示对话框,可以从中选择证书

    证书撤销列表函数:

    CertAddCRLContextToStore

    在证书库里增加一个CRL 上下文

    CertAddCRLLinkToStore

    在不同的库里增加一个CRL 上下文链接

    CertAddEncodedCRLToStore

    把编码CRL 转化成CRL 上下文然后把它加入到证书库中

    CertCreateCRLContext

    从编码CRL 中创建CRL 句柄,但不把它加到库中

    CertDeleteCRLFromStore

    从证书库里删除一个CRL

    CertDuplicateCRLContext

    通过增加引用计数来复制CRL 上下文

    CertEnumCRLsInStore

    枚举库里的CRL 句柄

    CertFindCertificateInCRL

    从指定证书里寻找CRL 列表

    CertFindCRLInStore

    在库里寻找CRL 上下文

    CertFreeCRLContext

    释放CRL 上下文

    CertGetCRLFromStore

    从库里得到CRL 上下文句柄

    CertSerializeCRLStoreElement

    串行化CRL 上下文的编码CRL 和它的属性

     

    证书信任列表函数:

    CertAddCTLContextToStore

    把一个CTL 上下文加入到证书库里

    CertAddCTLLinkToStore

    给不同库里的CRL 上下文添加链接

    CertAddEncodedCTLToStore

    把编码CTL 转化成CTL 上下文并且把它加到证书库里

    CertCreateCTLContext

    从编码CTL 中创建CTL 上下文

    CertDeleteCTLFromStore

    从证书库里删除CTL

    CertDuplicateCTLContext

    通过增加引用计数来复制CTL 上下文

    CertEnumCTLsInStore

    在证书库里枚举CTL 上下文

    CertFindCTLInStore

    在证书库里查找CTL 上下文

    CertFreeCTLContext

    释放CTL 上下文

    CertSerializeCTLStoreElement

    串行化CTL 上下文的编码CTL 和属性

     

    扩展属性函数:

    CertEnumCertificateContextProperties

    枚举指定证书上下文的属性

    CertEnumCRLContextProperties

    枚举指定CRL 上下文的属性

    CertEnumCTLContextProperties

    枚举指定CTL 上下文的属性

    CertGetCertificateContextProperty

    得到证书属性

    CertGetCRLContextProperty

    得到CRL 属性

    CertGetCTLContextProperty

    得到CTL 属性

    CertSetCertificateContextProperty

    设置证书属性

    CertSetCRLContextProperty

    设置CRL 属性

    CertSetCTLContextProperty

    设置CTL 属性

     

    3、证书验证函数

    证书验证是通过CTL 和证书列表进行的。

    使用CTL 的函数:

    CertVerifyCTLUsage

    验证CTL 用法

    CryptMsgEncodeAndSignCTL

    编码和验证CTL

    CryptMsgGetAndVerifySigner

    从一个消息中获得和验证CTL

    CryptMsgSignCTL

    对包含CTL 的消息进行签名

    证书链验证函数:

    CertCreateCertificateChainEngine

    为应用程序创建一个新的非却省的链引擎

    CertCreateCTLEntryFromCertificateContextProperties

    创建一个CTL 入口

    CertDuplicateCertificateChain

    通过增加引用计数来复制证书链

    CertFindChainInStore

    在证书库里查找证书链

    CertFreeCertificateChain

    释放证书链

    CertFreeCertificateChainEngine

    释放证书链引擎

    CertGetCertificateChain

    从最后一个证书建立一个上下文链表

    CertSetCertificateContextPropertiesFromCTLEntry

    通过CTL 入口属性来设置证书上下文的属性

    CertIsValidCRLForCertificate

    通过检查CRL 来确定CRL 是否包括指定被撤销的证书

    CertVerifyCertificateChainPolicy

    通过检查证书链来确定它的完整性

     4、消息函数

    CryptoAPI 消息函数包括两组:低级消息函数和简化消息函数。

    低级消息函数直接和PKCS#7 消息工作。这些函数对传输的PKCS#7 数据进行编码,对接收到的PKCS#7 数据进行解码,并且对接收到的消息进行解密和验证。

    简化消息函数是比较高级的函数,是对几个低级消息函数和证书函数的封装,用来执行指定任务。这些函数在完成一个任务时,减少了函数调用的数量,因此简化了CryptoAPI的使用。

    低级消息函数:

    CryptMsgCalculateEncodedLength

    计算加密消息的长度

    CryptMsgClose

    关闭加密消息的句柄

    CryptMsgControl

    执行指定的控制函数

    CryptMsgCountersign

    标记消息中已存在的签名

    CryptMsgCountersignEncoded

    标记已存在的签名

    CryptMsgDuplicate

    通过增加引用计数来复制加密消息句柄

    CryptMsgGetParam

    对加密消息进行编码或者解码后得到的参数

    CryptMsgOpenToDecode

    打开加密消息进行解码

    CryptMsgOpenToEncode

    打开加密消息进行编码

    CryptMsgUpdate

    更新加密消息的内容

    CryptMsgVerifyCountersignatureEncoded

    验证SignerInfo 结构中标记时间

    CryptMsgVerifyCountersignatureEncodedEx

    验证SignerInfo 结构中标记时间签名者可以是CERT_PUBLIC_KEY_INFO 结构

    简化消息函数:

    CryptDecodeMessage

    对加密消息进行解码

    CryptDecryptAndVerifyMessageSignature

    对指定消息进行解密并且验证签名者

    CryptDecryptMessage

    解密指定消息

    CryptEncryptMessage

    加密指定消息

    CryptGetMessageCertificates

    返回包含消息的证书和CRL 的证书库

    CryptGetMessageSignatureCount

    返回签名消息的签名者数量

    CryptHashMessage

    创建消息的哈希

    CryptSignAndEncryptMessage

    对消息进行签名并且加密

    CryptSignMessage

    对消息进行签名

    CryptVerifyDetachedMessageHash

    验证包含已解邦定哈希的哈希消息

    CryptVerifyDetachedMessageSignature

    验证包含已解邦定签名的签名消息

    CryptVerifyMessageHash

    验证一个哈希消息

    CryptVerifyMessageSignature

    验证一个签名消息

     5、辅助函数

    数据管理函数 

    CertCompareCertificate

    比较两个证书是否相同

    CertCompareCertificateName

    通过比较两个证书名称来决定他们是否相同

    CertCompareIntegerBlob

    比较两个整数BLOB

    CertComparePublicKeyInfo

    通过比较两个证书公钥来决定他们是否相同

    CertFindAttribute

    通过OID 来查找属性

    CertFindExtension

    通过OID 来查找扩展

    CertFindRDNAttr

    通过OID 来查找RDN 属性

    CertGetIntendedKeyUsage

    从证书中取得相关密钥用法

    CertGetPublicKeyLength

    从公钥BLOB 中取得公钥/私钥长度

    CertIsRDNAttrsInCertificateName

    通过指定RDN 数组属性比较证书名称属性来决定证书是否已包含了所有属性

    CertVerifyCRLRevocation

    验证主题证书是否在CRL 中

    CertVerifyCRLTimeValidity

    验证CRL 的有效时间

    CertVerifyRevocation

    验证主题证书是否在CRL 中

    CertVerifyTimeValidity

    验证CRL 的有效时间

    CertVerifyValidityNesting

    验证主题时间的有效性是否在发行者有效时间内

    CryptExportPublicKeyInfo

    导出公钥信息

    CryptExportPublicKeyInfoEx

    导出公钥信息(用户可以指定算法)

    CryptFindCertificateKeyProvInfo

    枚举CSP 和它的密钥容器来查找对应于公钥的相应私钥

    CryptFindLocalizedName

    查找指定名字的局部化名称

    CryptHashCertificate

    哈希证书内容

    CryptHashPublicKeyInfo

    计算公钥信息的哈希

    CryptHashToBeSigned

    计算签名内容的信息哈希值

    CryptImportPublicKeyInfo

    把公钥信息导入CSP 并且返回它的句柄

    CryptImportPublicKeyInfoEx

    把公钥信息导入CSP 并且返回它的句柄

    CryptMemAlloc

    分配内存

    CryptMemFree

    释放内存

    CryptMemRealloc

    重新分配内存

    CryptQueryObject

    得到BLOB 或文件的内容信息

    CryptSignAndEncodeCertificate

    对信息进行签名并且编码

    CryptSignCertificate

    对证书进行签名

    CryptVerifyCertificateSignature

    使用公钥信息对主题证书或CRL 的签名进行验证

    CryptVerifyCertificateSignatureEx

    使用公钥信息对主题证书或CRL 的签名进行验证

     数据转换函数

    CertAlgIdToOID

    把CSP 算法标示符转换成OID

    CertGetNameString

    得到证书的主题或颁发者名称并且把它转换成字符串

    CertNameToStr

    把证书名称BLOB 转换成字符串

    CertOIDToAlgId

    把OID 转换成CSP 算法表示符

    CertRDNValueToStr

    把名称值转换成字符串

           

    CertStrToName

    把字符串转换成编码证书名称

    CryptBinaryToString

    把二进制序列转换成字符串

    CryptFormatObject

    格式化编码数据,返回Unicode 字符串

    CryptStringToBinary

    把格式化的字符串转换成二进制序列

     增强密钥用法函数

    CertAddEnhancedKeyUsageIdentifier

    在证书EKU 属性中增加一个用法标示符

    CertGetEnhancedKeyUsage

    获得证书的EKU 扩展或属性信息

    CertRemoveEnhancedKeyUsageIdentifier

    从证书EKU 扩展属性中删除用法标示符OID

    CertSetEnhancedKeyUsage

    设置证书的EKU 属性

     密钥标示函数

    CryptCreateKeyIdentifierFromCSP

    创建CSP 公钥的密钥标示符

    CryptEnumKeyIdentifierProperties

    枚举标示符和其属性

    CryptGetKeyIdentifierProperty

    从指定密钥标示符中获得指定属性

    CryptSetKeyIdentifierProperty

    设置指定密钥标示符的属性

     证书库回调函数

    CertDllOpenStoreProv

    定义库提供者打开函数

    CertStoreProvCloseCallback

    决定当证书库引用计数为0 时将发生的动作

    CertStoreProvDeleteCertCallback

    决定当从证书库中删除一个证书之前的动作

    CertStoreProvDeleteCRLCallback

    决定当从证书库中删除一个CRL 之前的动作

    CertStoreProvReadCertCallback

    保留

    CertStoreProvReadCRLCallback

    保留

    CertStoreProvSetCertPropertyCallback

    决定在CertSetCertificateContextProperty 和CertGetCertificateContext 调用之前的动作

    CertStoreProvSetCRLPropertyCallback

    决定在CertSetCRLContextProperty 和CertGetCRLContextProperty 调用之前的动作

    CertStoreProvWriteCertCallback

    决定在证书库中加入一个证书前的动作

    CertStoreProvWriteCRLCallback

    决定在证书库中加入一个CRL 前的动作

    CertStoreProvReadCTL

    读CSP 的CTL 上下文

    CertStoreProvWriteCTL

    决定CTL 是否可被加入到证书库中

    CertStoreProvDeleteCTL

    决定CTL 是否可被删除

    CertStoreProvSetCTLProperty

    决定是否可以设置CTL 的属性

    CertStoreProvControl

    当缓冲库和存储库不同时,通知应用程序

    CertStoreProvFindCert

    在证书库中查找下一个证书

    CertStoreProvFreeFindCert

    释放前一个找到的证书上下文

    CertStoreProvGetCertProperty

    得到指定的证书属性

    CertStoreProvFindCRL

    查找第一个或下一个匹配的CRL

    CertStoreProvFreeFindCRL

    释放前一个找到的CRL 上下文

    CertStoreProvGetCRLProperty

    得到指定CRL 属性

    CertStoreProvFindCTL

    查找第一个或下一个匹配的CTL

    CertStoreProvFreeFindCTL

    释放前一个找到的CTL 上下文

    CertStoreProvGetCTLProperty

    得到指定CTL 属性

    OID支持函数

    CryptEnumOIDFuction

    枚举由编码类型、函数名和OID 指定注册的OID 函数

    CryptEnumOIDInfo

    枚举注册的OID 信息

    CryptEnumOIDInfo

    使用指定的密钥和组查找OID 信息

    CryptFreeOIDFuctionAddress

    释放OID 函数地址句柄

    CryptGetDefaultOIDDllList

    对于指定的函数结合和类型获得却省注册的DLL 入口

    CryptGetDefaultOIDFuctionAddress

    获得已安装的第一次或下一个却省函数或者加载包含却省函数的DLL

    CryptGetOIDFuctionAddress

    搜索匹配指定编码类型和OID 函数列表,如果没有找到,就查找注册表

    CryptGetOIDFuctionValue

    获得指定编码类型、函数名称和OID 的值

    CryptInitOIDFuctionSet

    初始化OID 函数集合的句柄

    CryptInstallOIDFuctionAddress

    安装可调用的OID 函数地址集合

    CryptRegisterDefaultOIDFuction

    注册包含却省函数的DLL

    CryptRegisterOIDFuction

    注册包含指定函数的DLL

    CryptRegisterOIDInfo

    注册由CRYPT_OID_INFO 指定的OID 信息

    CryptSetOIDFuctionValue

    设置编码类型、函数名称等的值

    CryptUnregisterDefaultOIDFunction

    卸载包含却省函数的DLL

    CryptUnregisterOIDFuction

    卸载包含函数的DLL

    CryptUnregisterOIDInfo

    卸载指定OID 的信息

    远程对象恢复函数

    CryptGetObjectUrl

    从证书、CTL 或CRL 中取得远程对象的URL

    CryptRetrieveObjectByUrl

    由URL 指定位置恢复PKI 对象

    PFX 函数

    PFXExportCertStore

    从证书库中导出证书或证书和私钥

    PFXExportCertStoreEx

    从证书库中导出证书或证书和私钥

    PFXImportCertStore

    从PFX BLOB 导入到指定证书库

    PFXIsPFXBlob

    把外层BLOB 像pfx 包那样解码

    PFXVerifyPassword

    把外层BLOB 像pfx 包那样解码,并且用指定口令解密

    二、PKCS# 11

    PKCS# 11标准定义了与密码令牌(如硬件安全模块(HSM)和智能卡)的独立于平台的APIAPI定义了最常用的加密对像类型(RSA密钥,X.509证书,DES / 三重DES密钥等)以及使用,创建/生成,修改和删除这些对象所需的所有功能。

    PKCS# 11只提供了接口的定义, 不包括接口的实现,一般接口的实现是由设备提供商提供的。

    插入Usbkey,使用11这个端口,只能导出公钥和证书,在加密解密,签名验证的过程,都是在usbkey内部进行操作,然后将结果导出到外部。

    PKCS#11函数类:

    CKF_ENCRYPT:加密类

    CKF_DECRYPT:解密类

    CKF_DIGEST:摘要类

    CKF_SIGN:签名类

    CKF_SIGN_RECOVER:可恢复签名类

    CKF_VERIFY:验证类

    CKF_VERIFY_RECOVER:可恢复验证类

    CKF_GENERATE:密钥产生

    CKF_GENERATE_KEY_PAIR:密钥对产生

    CKF_WRAP:密钥封装

    CKF_UNWRAP:密钥解封

    CKF_DERIVE:密钥派生

    各类函数

     

    三、GM/T 0016-2012 智能密码钥匙密码应用接口规范

    本标准规定了基于PKI密码体制的智能密码钥匙密码应用接口,描述了密码应用接口的函数数据类型、参数的定义和设备的安全要求。

    本标准适用于智能密码钥匙产品的研制、使用和检测。

    智能密码钥匙密码应用接口位于智能密码钥匙应用程序与设备之间,如下图所示。

     

    设备管理系列函数:

     

    应用管理系列函数:

     

    容器管理系列函数:

     

    密码服务系列函数:

     

     

    四、GM/T 0018-2012密码设备应用接口规范

    本标准规定了公钥密码基础设施应用技术体系下服务类密码设备的应用接口标准。

    本标准适用于服务类密码设备的研制、使用,以及基于该类密码设备的应用开发,也可用于指导该类密码设备的检测。

    设备管理类函数:

     

    密钥管理类函数:

     

     

    非对称算法运算类函数

     

    对称算法运算类函数

     

    杂凑运算类函数

     

    用户文件操作类函数

     

    差异:Crypto APIPKCS#11

    CryptoAPI是通过容器来组织密钥。一个容器可以存放两个RSA密钥对,一个用于签名验证,一个用于加解密。此外每个用户在加密对话其间还会随机产生许多会话密钥。

    PKCS#11有容器概念,它对密钥数据的保存和组织主要通过对象。p11定义了三种对象类型:数据对象,证书对象和密钥对象。

    CryptoAPI中的证书和证书库函数对应着PKCS#11中槽和令牌管理函数,其中CryptoAPI中多了证书库回调函数,可以进行返回操作。

    同的地方:

    肯定要有最基本的加解密函数,以及签名和验证函数,以及证书的管理函数、密钥管理函数、信息处理函数。

  • 相关阅读:
    chmod
    How to Mount an NTFS Filesystem
    关于三层架构和AJAX的一点联系
    Visual Studio开启.NET Framework源代码调试(Debug the Source Code for the .NET Framework Libraries)
    SQL语句中的子查询应用
    .NET中总共有多少种类型、多少个命名空间呢?
    Visual Studio中的《C# 语言规范》
    Visual Studio “类视图”和“对象浏览器”图标含义
    .NET程序员必备参考图片
    Microsoft Visual Studio Learning Pack 2.0
  • 原文地址:https://www.cnblogs.com/qbll/p/14699642.html
Copyright © 2011-2022 走看看