aardio 文档

crypt 库模块帮助文档

crypt 成员列表

crypt()

返回对象:cryptObject

crypt(CSP名称,CSP类型)

获取密钥容器.
所有参数可选,CSP类型使用 PROV前缀常量指定
如果不指定 CSP类型 则使用默认值 _PROV_RSA_FULL
如果不使用 CSP名称,则获取该类型默认提供程序名称
参考: https://docs.microsoft.com/en-us/windows/win32/seccertenroll/cryptoapi-cryptographic-service-providers

crypt.decodeBin(字符串,长度,选项)

Base64 或 Hex 解码。
可选参数 @3 使用 CRYPT_STRING 前缀常量指定选项
参数@3默认为_CRYPT_STRING_ANY

相关库与函数: string.base32, crypt.bin

crypt.encodeBin(字符串,长度,选项)

将字符串转换为 Base64 或 Hex 编码。
可选参数 @3 使用 CRYPT_STRING 前缀常量指定选项
参数 @3 默认为 _CRYPT_STRING_BASE64 。

相关库与函数: string.base32, crypt.bin

crypt.md2(字符串,是否大写,返回位数)

计算哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
默认返回32个字符

crypt.md4(字符串,是否大写,返回位数)

计算哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
默认返回32个字符

crypt.md5(字符串,是否大写,返回位数)

计算哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
默认返回32个字符

crypt.pem(字符串,标题)

PEM编码字符串,
如果参数@1是空值时不操作直接返回null

crypt.sha1(字符串,是否大写,返回位数)

计算sha1哈希值,
参数2可选,默认大写

crypt.sha256(字符串,是否大写,返回位数)

计算sha256哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符

crypt.sha384(字符串,是否大写,返回位数)

计算sha384哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符

crypt.sha512(字符串,是否大写,返回位数)

计算sha512哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符

cryptObject 成员列表

cryptObject.allocBuffer

分配加解密需要用到的 buffer。

cryptObject.allocBuffer(大小,块大小)

分配加解密需要用到的 buffer。
如果不手动分配,程序将会自动按需分配 buffer。
参数 @2 可选,可用对象的blockSize属性指定默认块大小。

cryptObject.blockSize

加密填充的块大小,默认为 8

cryptObject.buffer

加解密时暂存输入输出数据的缓冲区。
只能通过调用 allocBuffer 函数分配此缓冲区。
或者由加解密函数自动分配此缓冲区。

如果未分配缓冲区,或缓冲区大小不够。
加解密时会重新调用 allocBuffer 函数分配到合适大小。

一般不应直接访问此属性。

cryptObject.createHash()

返回对象:cryptHashObject

cryptObject.createHashByHmac()

返回对象:cryptHashObject

cryptObject.createHashByHmac(哈希数据,哈希算法)

所有参数可选,
哈希算法默认为_CALG_SHA1

cryptObject.createHashByKey()

返回对象:cryptHashObject

cryptObject.createHashByKey(算法ID)

使用当前密钥创建哈希

cryptObject.createHashByMd2()

创建 MD2 算法哈希对象
可选使用一个字符串参数指定哈希数据

返回对象:cryptHashObject

cryptObject.createHashByMd4()

创建 MD4 算法哈希对象
可选使用一个字符串参数指定哈希数据

返回对象:cryptHashObject

cryptObject.createHashByMd5()

创建 MD5 算法哈希对象
可选使用一个字符串参数指定哈希数据

返回对象:cryptHashObject

cryptObject.createHashBySha1()

创建 Sha1 算法哈希对象
可选使用一个字符串参数指定哈希数据

返回对象:cryptHashObject

cryptObject.createHashBySha256()

创建 Sha256 算法哈希对象,
可选使用一个字符串参数指定哈希数据,
创建 crypt 对象时参数@2 请指定 CSP 类型为_PROV_RSA_AES

返回对象:cryptHashObject

cryptObject.createHashBySha384()

创建 Sha384 算法哈希对象,
可选使用一个字符串参数指定哈希数据,
创建 crypt 对象时参数@2 请指定 CSP 类型为_PROV_RSA_AES

返回对象:cryptHashObject

cryptObject.createHashBySha512()

创建 Sha512 算法哈希对象,
可选使用一个字符串参数指定哈希数据,
创建 crypt 对象时参数@2 请指定 CSP 类型为_PROV_RSA_AES

返回对象:cryptHashObject

cryptObject.decodeObject(encoded,encodingType,structType)

解码对象,
参数@1为buffer或字符串,返回值为buffer类型,
用法参考 crypt.rsa中相关函数

cryptObject.decrypt

解密数据

cryptObject.decrypt(输入数据,是否已输入全部数据,哈希对象,选项)

参数 @1 指定字符串或 buffer。
除第一个参数以外,其他参数都是可选参数。
分块解密时,参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。
成功返回解密文本,失败返回空,
可使用..lasterr()函数获取错误信息

cryptObject.decrypt(输入缓冲区,输入数据大小,哈希对象,选项)

参数 @1 指定 buffer 或字符串。
如果参数 @2 指定的数值小于缓冲区据总长度,解密结束。
可使用 -1 表示解密结束,且输入数据大小等于缓冲区大小。
其他参数可忽略不用管。

成功返回存放解密结果的缓冲区,返回值 2 为解密长度。
需要分块解密的算法,例如 RSA 算法返回的解密结果为字符串。
失败返回 null, 错误信息,错误代码。

用法可参考 decryptFile 函数源码。

cryptObject.decryptFile

解密文件

cryptObject.decryptFile(输入文件,输出文件,缓冲区大小,进度回调函数,哈希对象,选项)

参数 @1 指定要解密的文件。参数 @2 指定要保存解密结果的文件。
文件参数都可以指定文件路径、文件对象(兼容 io.file,fsys.file,fsys.stream)。
可选用参数 @3 指定分块加密的字节长度,默认为 1MB。
指定字节长度时会自动调整到对齐块大小,参数不需要考虑对齐。
可选指定进度回调函数,回调参数 @1,@2 分别为输入文件总长度、已读取长度。
其他调用参数(哈希对象,选项)一般不必指定。

函数执行成功返回 true,失败返回 null,错误信息。

cryptObject.duplicateKey()

获取并复制当前使用的密钥,
该密钥必须调用 destroy 成员函数手动销毁

返回对象:cryptKeyObject

cryptObject.encodeObject(structInfo,encodingType,structType)

编码对象,
参数@1为buffer或字符串,返回值为buffer类型,
用法参考 crypt.rsa中相关函数

cryptObject.encrypt

加密数据

cryptObject.encrypt(输入数据,是否已输入全部数据,哈希对象,选项)

参数 @1 指定字符串或 buffer。
除第一个参数以外,其他参数都是可选参数。
分块加密时,参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。
成功返回加密文本,失败返回空,
可使用..lasterr()函数获取错误信息

cryptObject.encrypt(输入缓冲区,输入数据大小,哈希对象,选项)

参数 @1 指定 buffer 或字符串。
如果参数 @2 指定的数值小于缓冲区据总长度,加密结束。
可使用 -1 表示解密结束,且输入数据大小等于缓冲区大小。
其他参数可忽略不用管。

成功返回存放加密结果的缓冲区,返回值 2 为解密长度。
需要分块解密的算法,例如 RSA 算法返回的解密结果为字符串。
失败返回 null, 错误信息,错误代码。

用法可参考 encryptFile 函数源码。

cryptObject.encryptFile

加密文件

cryptObject.encryptFile(输入文件,输出文件,缓冲区大小,进度回调函数,哈希对象,选项)

参数 @1 指定要加密的文件。参数 @2 指定要保存加密结果的文件。
文件参数都可以指定文件路径、文件对象(兼容 io.file,fsys.file,fsys.stream)。
可选用参数 @3 指定分块加密的字节长度,默认为 1MB。
指定字节长度时会自动调整到对齐块大小,参数不需要考虑对齐。
可选指定进度回调函数,回调参数 @1,@2 分别为输入文件总长度、已读取长度。
其他调用参数(哈希对象,选项)一般不必指定。

函数执行成功返回 true,失败返回 null,错误信息。

cryptObject.exportKey(导出密钥类型,选项,加密密钥句柄)

导出密钥,除参数一以外其他参数可选
参数1为密钥类型,参数三为导出密钥可为空

cryptObject.exportPkcs8(keySpec,objId)

导出PKCS#8格式私钥,返回值为buffer类型,
用法参考 crypt.rsa中相关函数

cryptObject.exportPlainTextKey(选项,加密密钥句柄)

导出文本密钥,参数可选

cryptObject.exportPlainTextKeyBlob()

返回对象:plaintextkeyblobObject

cryptObject.exportPlainTextKeyBlob(flags,hExpKey)

导出密钥为PLAINTEXTKEYBLOB结构体,所有参数可选,
注意创建或导入密钥时指定了 _CRYPT_EXPORTABLE 才能导出密钥

cryptObject.exportPrivateKey(选项,加密密钥句柄)

导出私钥,参数可选

cryptObject.exportPublicKey(选项,加密密钥句柄)

导出公钥,参数可选

cryptObject.exportPublicKeyInfo(keySpec,encodingType)

导出公钥信息(CERT_PUBLIC_KEY_INFO),返回值为buffer类型,
用法参考 crypt.rsa中相关函数

cryptObject.genKey(algid,flags,size)

产生一个随机的会话密钥或者公/私钥对,
所有参数可选,algid指定算法,flags指定选项,size指定密钥长度

cryptObject.genSignatureKey(size,flags)

创建用于签名算法的公/私钥对,
@size 指定密钥长度,以二进制位为单位,省略此参数则默认为 2048,
@flags 指定选项,一般不必指定

cryptObject.getKeyAlgId()

返回当前密钥算法 ID

cryptObject.getKeyBlockLen()

获取密钥块长度

cryptObject.getKeyParam(类型,数据值)

获取密钥参数
数据值应当指定一个结构体
不指定数据值则自动分配buffer对象存储返回值
失败返回null

cryptObject.getKeyParamNumber(类型)

获取数值类型密钥参数

cryptObject.getUserKey(keySpec)

获取密钥,并设置为默认密钥
参数指定密钥类型,例如 _AT_SIGNATURE
成功返回true

cryptObject.hasKey()

检测是否已设置密钥

cryptObject.hash(字符串,是否大写,返回字符个数,算法)

计算哈希值,
除参数 @1 以外,其他参数可选。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
参数 @4 为可选参数,默认使用MD5算法

cryptObject.hashFile(文件路径,是否大写,算法)

计算哈希值,
除参数 @1 以外,其他参数可选。
参数 @3 省略时默认使用MD5算法。

此函数执行失败会返回2个值,分别为:null,错误信息,
创建 crypt 对象时参数@2 请指定为 _PROV_RSA_AES 才能支持 SHA-256(SHA-2)算法,
也可以改用 crypt.aes 或 crypt.rsa 创建 crypt 对象

cryptObject.importKey(密钥,选项,公钥句柄)

导入密钥,
密钥可以是结构体或字符串格式,
参数2可选,参数3可选
成功返回true,失败返回null,错误信息

cryptObject.importPrivateKeyInfo(certPrivateKeyInfo,encodingType,structType)

导入私钥信息(CRYPT_PRIVATE_KEY_INFO),参数@1为buffer或字符串,
用法参考 crypt.rsa中相关函数,
成功返回true

cryptObject.importPublicKeyInfo(certPublicKeyiNFO,encodingType)

导入公钥信息(CERT_PUBLIC_KEY_INFO),参数@1为buffer或字符串,
用法参考 crypt.rsa中相关函数,
成功返回true

cryptObject.lastHash

最后一次调用createHashXXX() 系列函数创建的哈希对象

cryptObject.release()

释放密码服务对象(CSP)
此函数可在对象析构时自动调用

cryptObject.setHashPassword("字符串参数",HASH算法ID,加密算法ID,选项)

设置会话密钥
成功返回密码容器对象,失败返回null,
默认哈希算法为_CALG_MD5,加密算法为 _CALG_RC4

cryptObject.setHashPassword()

返回对象:cryptObject

cryptObject.setInitVector(字符串向量,选项)

设置初始化向量,成功返回true,
参数2可选

cryptObject.setKey(密钥句柄)

设置新的默认密钥句柄,
该密钥将由密钥容器管理,不需要释放该密钥
参数为null则删除密钥

cryptObject.setKeyParam(类型,数据值,选项)

设置加密参数
数据值可以是结构体,字符串,或 buffer 对象,
如果数据值一个数值参数,则转换为表示32位整型数值地址的结构体指针
成功返回true,失败请使用 ..lasterr()获取错误信息

cryptObject.setKeyParamMode(_CRYPT_MODE)

设置加密模式
成功返回true,失败请使用 ..lasterr()获取错误信息

cryptObject.setKeyParamPadding(_PKCS5)

设置加密填充方式
成功返回true,失败请使用 ..lasterr()获取错误信息

cryptObject.setPlainPassword()

返回对象:cryptObject

cryptObject.setPlainPassword(明文密码,算法ID,选项)

参数@1使用字符串或buffer指定密码,
其他参数可选,算法ID默认为_CALG_RC4
成功返回密码容器对象,失败返回null,错误信息

cryptObject.sign(keySpec,flags)

返回签名
可选用 @keySpec 参数中指定密钥类型,
@flags 不必指定

cryptObject.signToBase64(keySpec,flags)

签名并反转字节序,进行 Base64 编码后返回,
可选用 @keySpec 参数中指定密钥类型,
@flags 参数不必指定

cryptObject.verifyFromBase64(signBase64,flags)

验证签名,
参数@signBase64 为 Base64编码并反转字节序的签名,
@flags 参数不必指定,
验证签名以前必须首先导入公钥,并创建哈希对象

cryptObject.verifySignature(sign,flags)

验证签名,
参数@1为签名字符串,其他参数可选
验证签名以前必须首先导入公钥,并创建哈希对象

全局对象 成员列表

_EXPO_OFFLOAD_FUNC_NAME

"OffloadModExpo"

_EXPO_OFFLOAD_REG_VALUE

"ExpoOffload"

_MS_DEF_DH_SCHANNEL_PROV

"Microsoft DH SChannel Cryptographic Provider"

_MS_DEF_DSS_DH_PROV

"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"

_MS_DEF_DSS_PROV

"Microsoft Base DSS Cryptographic Provider"

_MS_DEF_PROV

"Microsoft Base Cryptographic Provider v1.0"

_MS_DEF_RSA_SCHANNEL_PROV

"Microsoft RSA SChannel Cryptographic Provider"

_MS_DEF_RSA_SIG_PROV

"Microsoft RSA Signature Cryptographic Provider"

_MS_ENHANCED_PROV

"Microsoft Enhanced Cryptographic Provider v1.0"

_MS_ENH_DSS_DH_PROV

"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"

_MS_ENH_RSA_AES_PROV

"Microsoft Enhanced RSA and AES Cryptographic Provider"

_MS_SCARD_PROV

"Microsoft Base Smart Card Crypto Provider"

_MS_STRONG_PROV

"Microsoft Strong Cryptographic Provider"

_szFORCE_KEY_PROTECTION

"ForceKeyProtection"

_szKEY_CACHE_ENABLED

"CachePrivateKeys"

_szKEY_CACHE_SECONDS

"PrivateKeyLifetimeSeconds"

_szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS

"Software\\Policies\\Microsoft\\Cryptography"

_szPRIV_KEY_CACHE_MAX_ITEMS

"PrivKeyCacheMaxItems"

_szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS

"PrivKeyCachePurgeIntervalSeconds"

cryptKeyObject 成员列表

cryptKeyObject.destroy()

删除密钥

cryptKeyObject.duplicate()

复制密钥

返回对象:cryptKeyObject

plaintextkeyblobObject 成员列表

plaintextkeyblobObject.hdr.aiKeyAlg

密钥使用的算法ID

plaintextkeyblobObject.rgbKeyData

密钥,buffer类型数据

全局常量

_EXPO_OFFLOAD_FUNC_NAME

"OffloadModExpo"

_EXPO_OFFLOAD_REG_VALUE

"ExpoOffload"

_MS_DEF_DH_SCHANNEL_PROV

"Microsoft DH SChannel Cryptographic Provider"

_MS_DEF_DSS_DH_PROV

"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"

_MS_DEF_DSS_PROV

"Microsoft Base DSS Cryptographic Provider"

_MS_DEF_PROV

"Microsoft Base Cryptographic Provider v1.0"

_MS_DEF_RSA_SCHANNEL_PROV

"Microsoft RSA SChannel Cryptographic Provider"

_MS_DEF_RSA_SIG_PROV

"Microsoft RSA Signature Cryptographic Provider"

_MS_ENHANCED_PROV

"Microsoft Enhanced Cryptographic Provider v1.0"

_MS_ENH_DSS_DH_PROV

"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"

_MS_ENH_RSA_AES_PROV

"Microsoft Enhanced RSA and AES Cryptographic Provider"

_MS_SCARD_PROV

"Microsoft Base Smart Card Crypto Provider"

_MS_STRONG_PROV

"Microsoft Strong Cryptographic Provider"

自动完成常量

_ALG_CLASS_ALL=0xE000
_ALG_CLASS_ANY=0
_ALG_CLASS_DATA_ENCRYPT=0x6000
_ALG_CLASS_HASH=0x8000
_ALG_CLASS_KEY_EXCHANGE=0xA000
_ALG_CLASS_MSG_ENCRYPT=0x4000
_ALG_CLASS_SIGNATURE=0x2000
_ALG_SID_3DES=3
_ALG_SID_3DES_112=9
_ALG_SID_AES=0x11
_ALG_SID_AES_128=0xE
_ALG_SID_AES_192=0xF
_ALG_SID_AES_256=0x10
_ALG_SID_AGREED_KEY_ANY=3
_ALG_SID_ANY=0
_ALG_SID_CAST=6
_ALG_SID_CYLINK_MEK=0xC
_ALG_SID_DES=1
_ALG_SID_DESX=4
_ALG_SID_DH_EPHEM=2
_ALG_SID_DH_SANDF=1
_ALG_SID_DSS_ANY=0
_ALG_SID_DSS_DMS=2
_ALG_SID_DSS_PKCS=1
_ALG_SID_ECDH=5
_ALG_SID_ECDSA=3
_ALG_SID_ECMQV=1
_ALG_SID_EXAMPLE=0x50
_ALG_SID_HASH_REPLACE_OWF=0xB
_ALG_SID_HMAC=9
_ALG_SID_IDEA=5
_ALG_SID_KEA=4
_ALG_SID_MAC=5
_ALG_SID_MD2=1
_ALG_SID_MD4=2
_ALG_SID_MD5=3
_ALG_SID_PCT1_MASTER=4
_ALG_SID_RC2=2
_ALG_SID_RC4=1
_ALG_SID_RC5=0xD
_ALG_SID_RIPEMD=6
_ALG_SID_RIPEMD160=7
_ALG_SID_RSA_ANY=0
_ALG_SID_RSA_ENTRUST=3
_ALG_SID_RSA_MSATWORK=2
_ALG_SID_RSA_PGP=4
_ALG_SID_RSA_PKCS=1
_ALG_SID_SAFERSK128=8
_ALG_SID_SAFERSK64=7
_ALG_SID_SCHANNEL_ENC_KEY=7
_ALG_SID_SCHANNEL_MAC_KEY=3
_ALG_SID_SCHANNEL_MASTER_HASH=2
_ALG_SID_SEAL=2
_ALG_SID_SHA=4
_ALG_SID_SHA1=4
_ALG_SID_SHA_256=0xC
_ALG_SID_SHA_384=0xD
_ALG_SID_SHA_512=0xE
_ALG_SID_SKIPJACK=0xA
_ALG_SID_SSL2_MASTER=5
_ALG_SID_SSL3SHAMD5=8
_ALG_SID_SSL3_MASTER=1
_ALG_SID_TEK=0xB
_ALG_SID_TLS1PRF=0xA
_ALG_SID_TLS1_MASTER=6
_ALG_TYPE_ANY=0
_ALG_TYPE_BLOCK=0x600
_ALG_TYPE_DH=0xA00
_ALG_TYPE_DSS=0x200
_ALG_TYPE_RSA=0x400
_ALG_TYPE_SECURECHANNEL=0xC00
_ALG_TYPE_STREAM=0x800
_AT_KEYEXCHANGE=1
_AT_SIGNATURE=2
_CALG_3DES=0x6603
_CALG_3DES_112=0x6609
_CALG_AES=0x6611
_CALG_AES_128=0x660E
_CALG_AES_192=0x660F
_CALG_AES_256=0x6610
_CALG_AGREEDKEY_ANY=0xAA03
_CALG_CYLINK_MEK=0x660C
_CALG_DES=0x6601
_CALG_DESX=0x6604
_CALG_DH_EPHEM=0xAA02
_CALG_DH_SF=0xAA01
_CALG_DSS_SIGN=0x2200
_CALG_ECDH=0xAA05
_CALG_ECDSA=0x2203
_CALG_ECMQV=0xA001
_CALG_HASH_REPLACE_OWF=0x800B
_CALG_HMAC=0x8009
_CALG_HUGHES_MD5=0xA003
_CALG_KEA_KEYX=0xAA04
_CALG_MAC=0x8005
_CALG_MD2=0x8001
_CALG_MD4=0x8002
_CALG_MD5=0x8003
_CALG_NO_SIGN=0x2000
_CALG_PCT1_MASTER=0x4C04
_CALG_RC2=0x6602
_CALG_RC4=0x6801
_CALG_RC5=0x660D
_CALG_RSA_KEYX=0xA400
_CALG_RSA_SIGN=0x2400
_CALG_SCHANNEL_ENC_KEY=0x4C07
_CALG_SCHANNEL_MAC_KEY=0x4C03
_CALG_SCHANNEL_MASTER_HASH=0x4C02
_CALG_SEAL=0x6802
_CALG_SHA=0x8004
_CALG_SHA1=0x8004
_CALG_SHA_256=0x800C
_CALG_SHA_384=0x800D
_CALG_SHA_512=0x800E
_CALG_SKIPJACK=0x660A
_CALG_SSL2_MASTER=0x4C05
_CALG_SSL3_MASTER=0x4C01
_CALG_SSL3_SHAMD5=0x8008
_CALG_TEK=0x660B
_CALG_TLS1PRF=0x800A
_CALG_TLS1_MASTER=0x4C06
_CRYPT_ARCHIVABLE=0x4000
_CRYPT_ARCHIVE=0x100
_CRYPT_BLOB_VER3=0x80
_CRYPT_CREATE_IV=0x200
_CRYPT_CREATE_SALT=4
_CRYPT_DATA_KEY=0x800
_CRYPT_DECRYPT=2
_CRYPT_DECRYPT_RSA_NO_PADDING_CHECK=0x20
_CRYPT_DEFAULT_CONTAINER_OPTIONAL=0x80
_CRYPT_DELETEKEYSET=0x10
_CRYPT_DELETE_DEFAULT=4
_CRYPT_DESTROYKEY=4
_CRYPT_ENCRYPT=1
_CRYPT_EXPORT=4
_CRYPT_EXPORTABLE=1
_CRYPT_EXPORT_KEY=0x40
_CRYPT_FAILED=0
_CRYPT_FASTSGC=2
_CRYPT_FIRST=1
_CRYPT_FLAG_IPSEC=0x10
_CRYPT_FLAG_PCT1=1
_CRYPT_FLAG_SIGNING=0x20
_CRYPT_FLAG_SSL2=2
_CRYPT_FLAG_SSL3=4
_CRYPT_FLAG_TLS1=8
_CRYPT_FORCE_KEY_PROTECTION_HIGH=0x8000
_CRYPT_IMPL_HARDWARE=1
_CRYPT_IMPL_MIXED=3
_CRYPT_IMPL_REMOVABLE=8
_CRYPT_IMPL_SOFTWARE=2
_CRYPT_IMPL_UNKNOWN=4
_CRYPT_IMPORT_KEY=0x80
_CRYPT_INITIATOR=0x40
_CRYPT_IPSEC_HMAC_KEY=0x100
_CRYPT_KEK=0x400
_CRYPT_LITTLE_ENDIAN=1
_CRYPT_MAC=0x20
_CRYPT_MACHINE_DEFAULT=1
_CRYPT_MACHINE_KEYSET=0x20
_CRYPT_MODE_CBC=1
_CRYPT_MODE_CFB=4
_CRYPT_MODE_CTS=5
_CRYPT_MODE_ECB=2
_CRYPT_MODE_OFB=3
_CRYPT_NEWKEYSET=8
_CRYPT_NEXT=2
_CRYPT_NOHASHOID=1
_CRYPT_NO_SALT=0x10
_CRYPT_ONLINE=0x80
_CRYPT_OWF_REPL_LM_HASH=1
_CRYPT_PREGEN=0x40
_CRYPT_PSTORE=2
_CRYPT_READ=8
_CRYPT_RECIPIENT=0x10
_CRYPT_SECRETDIGEST=1
_CRYPT_SEC_DESCR=1
_CRYPT_SERVER=0x400
_CRYPT_SF=0x100
_CRYPT_SGC=1
_CRYPT_SGCKEY=0x2000
_CRYPT_SGC_ENUM=4
_CRYPT_SILENT=0x40
_CRYPT_SSL2_FALLBACK=2
_CRYPT_SUCCEED=1
_CRYPT_TYPE2_FORMAT=2
_CRYPT_UI_PROMPT=4
_CRYPT_UPDATE_KEY=8
_CRYPT_USERDATA=1
_CRYPT_USER_DEFAULT=2
_CRYPT_USER_PROTECTED=2
_CRYPT_VERIFYCONTEXT=0xF0000000
_CRYPT_VOLATILE=0x1000
_CRYPT_WRITE=0x10
_CRYPT_X931_FORMAT=4
_CRYPT_Y_ONLY=1
_HP_ALGID=1
_HP_HASHSIZE=4
_HP_HASHVAL=2
_HP_HMAC_INFO=5
_HP_TLS1PRF_LABEL=6
_HP_TLS1PRF_SEED=7
_KEYSTATEBLOB=0xC
_KEY_LENGTH_MASK=0xFFFF0000
_KP_ADMIN_PIN=0x1F
_KP_CMS_DH_KEY_INFO=0x26
_KP_CMS_KEY_INFO=0x25
_KP_KEYEXCHANGE_PIN=0x20
_KP_KEYLEN=9
_KP_KEYVAL=0x1E
_KP_PIN_ID=0x2B
_KP_PIN_INFO=0x2C
_KP_PRECOMP_MD5=0x18
_KP_PRECOMP_SHA=0x19
_KP_PREHASH=0x22
_KP_PUB_EX_LEN=0x1C
_KP_PUB_EX_VAL=0x1D
_KP_ROUNDS=0x23
_KP_RP=0x17
_KP_SIGNATURE_PIN=0x21
_MAXUIDLEN=0x40
_OPAQUEKEYBLOB=9
_PKCS5_PADDING=1
_PLAINTEXTKEYBLOB=8
_PP_ADMIN_PIN=0x1F
_PP_APPLI_CERT=0x12
_PP_CHANGE_PASSWORD=7
_PP_CLIENT_HWND=1
_PP_CONTAINER=6
_PP_CONTEXT_INFO=0xB
_PP_CRYPT_COUNT_KEY_USE=0x29
_PP_DELETEKEY=0x18
_PP_ENUMALGS=1
_PP_ENUMALGS_EX=0x16
_PP_ENUMCONTAINERS=2
_PP_ENUMELECTROOTS=0x1A
_PP_ENUMEX_SIGNING_PROT=0x28
_PP_ENUMMANDROOTS=0x19
_PP_IMPTYPE=3
_PP_KEYEXCHANGE_ALG=0xE
_PP_KEYEXCHANGE_KEYSIZE=0xC
_PP_KEYEXCHANGE_PIN=0x20
_PP_KEYSET_TYPE=0x1B
_PP_KEYSPEC=0x27
_PP_KEYSTORAGE=0x11
_PP_KEYX_KEYSIZE_INC=0x23
_PP_KEY_TYPE_SUBTYPE=0xA
_PP_NAME=4
_PP_PIN_PROMPT_STRING=0x2C
_PP_PROVTYPE=0x10
_PP_ROOT_CERTSTORE=0x2E
_PP_SECURE_KEYEXCHANGE_PIN=0x2F
_PP_SECURE_SIGNATURE_PIN=0x30
_PP_SESSION_KEYSIZE=0x14
_PP_SGC_INFO=0x25
_PP_SIGNATURE_ALG=0xF
_PP_SIGNATURE_KEYSIZE=0xD
_PP_SIGNATURE_PIN=0x21
_PP_SIG_KEYSIZE_INC=0x22
_PP_SMARTCARD_GUID=0x2D
_PP_SMARTCARD_READER=0x2B
_PP_SYM_KEYSIZE=0x13
_PP_UI_PROMPT=0x15
_PP_UNIQUE_CONTAINER=0x24
_PP_USER_CERTSTORE=0x2A
_PP_USE_HARDWARE_RNG=0x26
_PP_VERSION=5
_PRIVATEKEYBLOB=7
_PROV_DH_SCHANNEL=0x12
_PROV_DSS=3
_PROV_DSS_DH=0xD
_PROV_EC_ECDSA_FULL=0x10
_PROV_EC_ECDSA_SIG=0xE
_PROV_EC_ECNRA_FULL=0x11
_PROV_EC_ECNRA_SIG=0xF
_PROV_FORTEZZA=4
_PROV_INTEL_SEC=0x16
_PROV_MS_EXCHANGE=5
_PROV_REPLACE_OWF=0x17
_PROV_RNG=0x15
_PROV_RSA_AES=0x18
_PROV_RSA_FULL=1
_PROV_RSA_SCHANNEL=0xC
_PROV_RSA_SIG=2
_PROV_SPYRUS_LYNKS=0x14
_PROV_SSL=6
_PROV_STT_ACQ=8
_PROV_STT_BRND=9
_PROV_STT_ISS=0xB
_PROV_STT_MER=7
_PROV_STT_ROOT=0xA
_PUBLICKEYBLOB=6
_PUBLICKEYBLOBEX=0xA
_RANDOM_PADDING=2
_RSA1024BIT_KEY=0x4000000
_SIGNATURE_RESOURCE_NUMBER=0x29A
_SIMPLEBLOB=1
_SYMMETRICWRAPKEYBLOB=0xB
_X509_PKCS_7_ASN_ENCODING=0x10001
_ZERO_PADDING=3

Markdown 格式