# crypt.rsa 库模块帮助文档

## crypt 成员列表 <a id="crypt" href="#crypt">&#x23;</a>

### crypt.rsa <a id="crypt.rsa" href="#crypt.rsa">&#x23;</a>
RSA加密算法支持库

创建 RSA 加密容器,不建议指定参数,  

返回对象传入原生 API 参数时会自动转换为密钥容器句柄（CSP handle）。  

[返回对象:cryptrsaObject](#cryptrsaObject)

### crypt.rsa() <a id="crypt.rsa" href="#crypt.rsa">&#x23;</a>
[返回对象:cryptrsaObject](#cryptrsaObject)

### crypt.rsa(provider,provType,container,flags) <a id="crypt.rsa" href="#crypt.rsa">&#x23;</a>
创建 RSA 密钥容器，所有参数可选。  
- 可选参数 @provider 使用 _PROV_前缀常量指定 CSP（Cryptographic Service Provider） 名称。  
@provider 的默认值为 _MS_ENH_RSA_AES_PROV 。  
- 可选参数 @provType 指定 CSP 类型，默认值为 `0x18/*_PROV_RSA_AES*/`。  
- 可选参数 @container 指定密钥容器名称，默认值为 null。  
- 可选参数 @flags 指定选项（数值）。  
如果指定了 szContainer 则 @flags 默认为 `8/*_CRYPT_NEWKEYSET*/`，  
否则 @flags 默认为 `0xF0000000/*_CRYPT_VERIFYCONTEXT*/`。

## cryptrsaObject 成员列表 <a id="cryptrsaObject" href="#cryptrsaObject">&#x23;</a>

### cryptrsaObject.allocBuffer <a id="cryptrsaObject.allocBuffer" href="#cryptrsaObject.allocBuffer">&#x23;</a>
分配加解密需要用到的 buffer。

### cryptrsaObject.allocBuffer(大小,块大小) <a id="cryptrsaObject.allocBuffer" href="#cryptrsaObject.allocBuffer">&#x23;</a>
分配加解密需要用到的 buffer。  
如果不手动分配，程序将会自动按需分配 buffer。  
参数 @2 可选，可用对象的blockSize属性指定默认块大小。

### cryptrsaObject.blockSize <a id="cryptrsaObject.blockSize" href="#cryptrsaObject.blockSize">&#x23;</a>
加密填充的块大小

### cryptrsaObject.createHash() <a id="cryptrsaObject.createHash" href="#cryptrsaObject.createHash">&#x23;</a>
[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashByHmac() <a id="cryptrsaObject.createHashByHmac" href="#cryptrsaObject.createHashByHmac">&#x23;</a>
[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashByHmac(哈希数据,哈希算法) <a id="cryptrsaObject.createHashByHmac" href="#cryptrsaObject.createHashByHmac">&#x23;</a>
所有参数可选,  
哈希算法默认为_CALG_SHA1

### cryptrsaObject.createHashByKey() <a id="cryptrsaObject.createHashByKey" href="#cryptrsaObject.createHashByKey">&#x23;</a>
[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashByKey(算法ID) <a id="cryptrsaObject.createHashByKey" href="#cryptrsaObject.createHashByKey">&#x23;</a>
使用当前密钥创建哈希

### cryptrsaObject.createHashByMd2() <a id="cryptrsaObject.createHashByMd2" href="#cryptrsaObject.createHashByMd2">&#x23;</a>
创建MD2算法哈希对象  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashByMd4() <a id="cryptrsaObject.createHashByMd4" href="#cryptrsaObject.createHashByMd4">&#x23;</a>
创建MD4算法哈希对象  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashByMd5() <a id="cryptrsaObject.createHashByMd5" href="#cryptrsaObject.createHashByMd5">&#x23;</a>
创建MD5算法哈希对象  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashBySha1() <a id="cryptrsaObject.createHashBySha1" href="#cryptrsaObject.createHashBySha1">&#x23;</a>
创建Sha1算法哈希对象  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashBySha256() <a id="cryptrsaObject.createHashBySha256" href="#cryptrsaObject.createHashBySha256">&#x23;</a>
创建 Sha256 算法哈希对象,  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashBySha384() <a id="cryptrsaObject.createHashBySha384" href="#cryptrsaObject.createHashBySha384">&#x23;</a>
创建 Sha384 算法哈希对象,  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.createHashBySha512() <a id="cryptrsaObject.createHashBySha512" href="#cryptrsaObject.createHashBySha512">&#x23;</a>
创建 Sha512 算法哈希对象,  
可选使用一个字符串参数指定哈希数据  

[返回对象:cryptHashObject](#cryptHashObject)

### cryptrsaObject.decodeObject(encoded,encodingType,structType) <a id="cryptrsaObject.decodeObject" href="#cryptrsaObject.decodeObject">&#x23;</a>
解码对象,  
参数@1为buffer或字符串,返回值为buffer类型,  
用法参考 crypt.rsa中相关函数

### cryptrsaObject.decrypt <a id="cryptrsaObject.decrypt" href="#cryptrsaObject.decrypt">&#x23;</a>
RSA解密。解密模式为 RSA/ECB/PKCS1Padding。  
与其他解密结果字节序相反的编程语言互通可改用 decryptReverse 函数。

### cryptrsaObject.decrypt(输入数据,是否已输入全部数据,哈希对象,选项) <a id="cryptrsaObject.decrypt" href="#cryptrsaObject.decrypt">&#x23;</a>
参数 @1 指定字符串或 buffer。  
除第一个参数以外，其他参数都是可选参数。  
分块解密时，参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。  
成功返回解密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.decrypt(输入缓冲区,输入数据大小,哈希对象,选项) <a id="cryptrsaObject.decrypt" href="#cryptrsaObject.decrypt">&#x23;</a>
参数 @1 指定 buffer 或字符串。  
如果参数 @2 指定的数值小于缓冲区据总长度，解密结束。  
可使用 -1 表示解密结束，且输入数据大小等于缓冲区大小。  
其他参数可忽略不用管。  

成功返回存放解密结果的字符串，返回值 2 为返回字符串的长度。  
失败返回 null, 错误信息,错误代码。

### cryptrsaObject.decryptFile <a id="cryptrsaObject.decryptFile" href="#cryptrsaObject.decryptFile">&#x23;</a>
解密文件

解密文件

### cryptrsaObject.decryptFile(加密源文件路径,输出文件路径,缓冲区大小,哈希对象,选项) <a id="cryptrsaObject.decryptFile" href="#cryptrsaObject.decryptFile">&#x23;</a>
参数 @1 指定要解密的文件路径。  
参数 @2 指定要保存解密结果的文件路径。  
可选用参数 @3 指定分块加密的字节长度，默认为 1MB。  
指定字节长度时会自动调整到对齐块大小，参数不需要考虑对齐。  
其他参数一般不必指定。

### cryptrsaObject.decryptFile(输入文件,输出文件,缓冲区大小,进度回调函数,哈希对象,选项) <a id="cryptrsaObject.decryptFile" href="#cryptrsaObject.decryptFile">&#x23;</a>
参数 @1 指定要解密的文件。参数 @2 指定要保存解密结果的文件。  
文件参数都可以指定文件路径、文件对象（兼容 io.file,fsys.file,fsys.stream）。  
可选用参数 @3 指定分块加密的字节长度，默认为 1MB。  
指定字节长度时会自动调整到对齐块大小，参数不需要考虑对齐。  
可选指定进度回调函数，回调参数 @1,@2 分别为输入文件总长度、已读取长度。  
其他调用参数（哈希对象，选项）一般不必指定。  

函数执行成功返回 true，失败返回 null,错误信息。

### cryptrsaObject.decryptOaep(字符串,是否已输入全部数据,哈希对象) <a id="cryptrsaObject.decryptOaep" href="#cryptrsaObject.decryptOaep">&#x23;</a>
RSA 解密。  
填充模式为 PKCS#1 OAEP，其他与 decrypt 函数相同。  
除第一个参数以外,其他参数都是可选参数  
成功返回解密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.decryptOaepReverse(字符串) <a id="cryptrsaObject.decryptOaepReverse" href="#cryptrsaObject.decryptOaepReverse">&#x23;</a>
RSA 解密，反转字节序。  
填充模式为 PKCS#1 OAEP，其他与 decryptReverse 函数相同。  
成功返回解密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.decryptReverse <a id="cryptrsaObject.decryptReverse" href="#cryptrsaObject.decryptReverse">&#x23;</a>
RSA解密，反转字节序,  
解密模式为 RSA/ECB/PKCS1Padding

### cryptrsaObject.decryptReverse(字符串,选项) <a id="cryptrsaObject.decryptReverse" href="#cryptrsaObject.decryptReverse">&#x23;</a>
选项为可选参数  
成功返回解密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.decryptToArray <a id="cryptrsaObject.decryptToArray" href="#cryptrsaObject.decryptToArray">&#x23;</a>
RSA解密,并返回字符串数组,  
解密模式为 RSA/ECB/PKCS1Padding  
与C#、Java等互通建议改用decryptReverse

### cryptrsaObject.decryptToArray(字符串,是否已输入全部数据,哈希对象,选项) <a id="cryptrsaObject.decryptToArray" href="#cryptrsaObject.decryptToArray">&#x23;</a>
除第一个参数以外,其他参数都是可选参数  
成功返回解密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.delete() <a id="cryptrsaObject.delete" href="#cryptrsaObject.delete">&#x23;</a>
释放并且删除密钥容器。  
谨慎调用此函数，一般不应当调用此函数。  
大多时候应当仅调用 release 方法释放密钥容器而不是删除它。  
除非在创建此对象时最后一个构造参数 @flags 指定了`8/*_CRYPT_NEWKEYSET*/`。  
创建对象时使用构造参数 @container 指定容器名时也会默认将 @flags 指定为 `8/*_CRYPT_NEWKEYSET*/`。  

此函数等价于先调用 release 方法释放自身，然后以相同的参数重新调用构造函数并将 @flags 参数指定为 `0x10/*_CRYPT_DELETEKEYSET*/`

### cryptrsaObject.duplicateKey() <a id="cryptrsaObject.duplicateKey" href="#cryptrsaObject.duplicateKey">&#x23;</a>
获取并复制当前使用的密钥,  
该密钥必须调用 destroy 成员函数手动销毁  

[返回对象:cryptKeyObject](#cryptKeyObject)

### cryptrsaObject.encodeObject(structInfo,encodingType,structType) <a id="cryptrsaObject.encodeObject" href="#cryptrsaObject.encodeObject">&#x23;</a>
编码对象,  
参数@1为buffer或字符串,返回值为buffer类型,  
用法参考 crypt.rsa中相关函数

### cryptrsaObject.encrypt <a id="cryptrsaObject.encrypt" href="#cryptrsaObject.encrypt">&#x23;</a>
加密数据

RSA加密  
加密模式为 RSA/ECB/PKCS1Padding  
与与其他有k密结果字节序相反的编程语言互通可改用 encryptReverse 函数。

### cryptrsaObject.encrypt(输入数据,是否已输入全部数据,哈希对象,选项) <a id="cryptrsaObject.encrypt" href="#cryptrsaObject.encrypt">&#x23;</a>
参数 @1 指定字符串或 buffer。  
除第一个参数以外，其他参数都是可选参数。  
分块加密时，参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。  
成功返回加密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.encrypt(输入缓冲区,输入数据大小,哈希对象,选项) <a id="cryptrsaObject.encrypt" href="#cryptrsaObject.encrypt">&#x23;</a>
参数 @1 指定 buffer 或字符串。  
如果参数 @2 指定的数值小于缓冲区据总长度，加密结束。  
可使用 -1 表示解密结束，且输入数据大小等于缓冲区大小。  
其他参数可忽略不用管。  

成功返回存放加密结果的字符串，返回值 2 为返回字符串的长度。  
失败返回 null, 错误信息,错误代码。

### cryptrsaObject.encryptFile <a id="cryptrsaObject.encryptFile" href="#cryptrsaObject.encryptFile">&#x23;</a>
加密文件

加密文件

### cryptrsaObject.encryptFile(加密源文件路径,输出文件路径,缓冲区大小,哈希对象,选项) <a id="cryptrsaObject.encryptFile" href="#cryptrsaObject.encryptFile">&#x23;</a>
参数 @1 指定要加密的文件路径。  
参数 @2 指定要保存加密结果的文件路径。  
可选用参数 @3 指定分块加密的字节长度，默认为 1MB。  
指定字节长度时会自动调整到对齐块大小，参数不需要考虑对齐  
其他参数一般不必指定。

### cryptrsaObject.encryptFile(输入文件,输出文件,缓冲区大小,进度回调函数,哈希对象,选项) <a id="cryptrsaObject.encryptFile" href="#cryptrsaObject.encryptFile">&#x23;</a>
参数 @1 指定要加密的文件。参数 @2 指定要保存加密结果的文件。  
文件参数都可以指定文件路径、文件对象（兼容 io.file,fsys.file,fsys.stream）。  
可选用参数 @3 指定分块加密的字节长度，默认为 1MB。  
指定字节长度时会自动调整到对齐块大小，参数不需要考虑对齐。  
可选指定进度回调函数，回调参数 @1,@2 分别为输入文件总长度、已读取长度。  
其他调用参数（哈希对象，选项）一般不必指定。  

函数执行成功返回 true，失败返回 null,错误信息。

### cryptrsaObject.encryptOaep(字符串,是否已输入全部数据,哈希对象,选项) <a id="cryptrsaObject.encryptOaep" href="#cryptrsaObject.encryptOaep">&#x23;</a>
RSA 加密。  
填充模式为 PKCS#1 OAEP，其他与 encrypt 函数相同。  
除第一个参数以外,其他参数都是可选参数  
成功返回加密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.encryptOaepReverse(字符串) <a id="cryptrsaObject.encryptOaepReverse" href="#cryptrsaObject.encryptOaepReverse">&#x23;</a>
RSA加密，反转字节序。  
填充模式为 PKCS#1 OAEP，其他与 encryptReverse 函数相同。  
成功返回加密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.encryptReverse <a id="cryptrsaObject.encryptReverse" href="#cryptrsaObject.encryptReverse">&#x23;</a>
RSA加密，反转字节序,  
加密模式为 RSA/ECB/PKCS1Padding

### cryptrsaObject.encryptReverse(字符串,选项) <a id="cryptrsaObject.encryptReverse" href="#cryptrsaObject.encryptReverse">&#x23;</a>
选项为可选可选参数  
成功返回加密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.encryptToArray <a id="cryptrsaObject.encryptToArray" href="#cryptrsaObject.encryptToArray">&#x23;</a>
RSA加密,并返回字符串数组,  
加密模式为 RSA/ECB/PKCS1Padding  
与C#、Java等互通建议改用encryptReverse

### cryptrsaObject.encryptToArray(字符串,是否已输入全部数据,哈希对象,选项) <a id="cryptrsaObject.encryptToArray" href="#cryptrsaObject.encryptToArray">&#x23;</a>
除第一个参数以外,其他参数都是可选参数  
成功返回加密文本,失败返回空,  
可使用..lasterr()函数获取错误信息

### cryptrsaObject.exportKey(导出密钥类型,选项,加密密钥句柄) <a id="cryptrsaObject.exportKey" href="#cryptrsaObject.exportKey">&#x23;</a>
导出密钥,除参数一以外其他参数可选  
参数1为密钥类型,参数三为导出密钥可为空

### cryptrsaObject.exportPkcs8(keySpec,objId) <a id="cryptrsaObject.exportPkcs8" href="#cryptrsaObject.exportPkcs8">&#x23;</a>
导出PKCS#8格式私钥,返回值为buffer类型,  
用法参考 crypt.rsa中相关函数

### cryptrsaObject.exportPlainTextKey(选项,加密密钥句柄) <a id="cryptrsaObject.exportPlainTextKey" href="#cryptrsaObject.exportPlainTextKey">&#x23;</a>
导出文本密钥,参数可选

### cryptrsaObject.exportPrivateKey(选项,加密密钥句柄) <a id="cryptrsaObject.exportPrivateKey" href="#cryptrsaObject.exportPrivateKey">&#x23;</a>
导出私钥,参数可选

### cryptrsaObject.exportPrivateKeyPkcs1Raw() <a id="cryptrsaObject.exportPrivateKeyPkcs1Raw" href="#cryptrsaObject.exportPrivateKeyPkcs1Raw">&#x23;</a>
导出 PKCS#1 格式私钥,  
返回值为buffer类型

### cryptrsaObject.exportPrivateKeyPkcs1RawToPem() <a id="cryptrsaObject.exportPrivateKeyPkcs1RawToPem" href="#cryptrsaObject.exportPrivateKeyPkcs1RawToPem">&#x23;</a>
导出 PKCS#1 格式私钥（PEM）,  
返回值为string类型

### cryptrsaObject.exportPrivateKeyPkcs8() <a id="cryptrsaObject.exportPrivateKeyPkcs8" href="#cryptrsaObject.exportPrivateKeyPkcs8">&#x23;</a>
导出通用的 PKCS#8 格式私钥,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置

### cryptrsaObject.exportPrivateKeyPkcs8ToPem() <a id="cryptrsaObject.exportPrivateKeyPkcs8ToPem" href="#cryptrsaObject.exportPrivateKeyPkcs8ToPem">&#x23;</a>
导出通用的 PKCS#8 格式私钥（PEM）,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置

### cryptrsaObject.exportPublicKey(选项,加密密钥句柄) <a id="cryptrsaObject.exportPublicKey" href="#cryptrsaObject.exportPublicKey">&#x23;</a>
导出公钥,参数可选

### cryptrsaObject.exportPublicKeyInfo(keySpec,encodingType) <a id="cryptrsaObject.exportPublicKeyInfo" href="#cryptrsaObject.exportPublicKeyInfo">&#x23;</a>
导出公钥信息（CERT_PUBLIC_KEY_INFO）,返回值为 buffer 类型。  
参数 @keySpec 可指定为  `2/*_AT_SIGNATURE*/` 或 `1/*_AT_KEYEXCHANGE*/`。  
改为调用 exportPublicKeyInfo2 则自动指定 keySpec 参数。  
参数 @encodingType 用法请参考 crypt.rsa 源码。

### cryptrsaObject.exportPublicKeyPkcs1Raw() <a id="cryptrsaObject.exportPublicKeyPkcs1Raw" href="#cryptrsaObject.exportPublicKeyPkcs1Raw">&#x23;</a>
导出 PKCS#1 格式公钥,  
返回值为buffer类型

### cryptrsaObject.exportPublicKeyPkcs1RawToPem() <a id="cryptrsaObject.exportPublicKeyPkcs1RawToPem" href="#cryptrsaObject.exportPublicKeyPkcs1RawToPem">&#x23;</a>
导出 PKCS#1 格式公钥（PEM）,  
返回值为string类型

### cryptrsaObject.exportPublicKeyX509() <a id="cryptrsaObject.exportPublicKeyX509" href="#cryptrsaObject.exportPublicKeyX509">&#x23;</a>
导出通用的 SPKI（Subject Public Key Info）格式公钥,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置,  
返回值为buffer类型

### cryptrsaObject.exportPublicKeyX509ToPem() <a id="cryptrsaObject.exportPublicKeyX509ToPem" href="#cryptrsaObject.exportPublicKeyX509ToPem">&#x23;</a>
导出通用的 SPKI（Subject Public Key Info）格式公钥（PEM）,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置,  
返回值为string类型

### cryptrsaObject.genKey(algid,flags,size) <a id="cryptrsaObject.genKey" href="#cryptrsaObject.genKey">&#x23;</a>
产生一个随机的会话密钥或者公/私钥对,  
所有参数可选,algid指定算法,flags指定选项,size指定密钥长度

### cryptrsaObject.genSignatureKey(size,flags) <a id="cryptrsaObject.genSignatureKey" href="#cryptrsaObject.genSignatureKey">&#x23;</a>
创建用于签名算法的公/私钥对,  
@size 指定密钥长度,以二进制位为单位,省略此参数则默认为 2048,  
@flags 指定选项,一般不必指定

### cryptrsaObject.getKeyAlgId() <a id="cryptrsaObject.getKeyAlgId" href="#cryptrsaObject.getKeyAlgId">&#x23;</a>
返回当前密钥算法 ID

### cryptrsaObject.getKeyBlockLen() <a id="cryptrsaObject.getKeyBlockLen" href="#cryptrsaObject.getKeyBlockLen">&#x23;</a>
获取密钥块长度

### cryptrsaObject.getKeyParam(类型,数据值) <a id="cryptrsaObject.getKeyParam" href="#cryptrsaObject.getKeyParam">&#x23;</a>
获取密钥参数  
数据值应当指定一个结构体  
不指定数据值则自动分配buffer对象存储返回值  
失败返回null

### cryptrsaObject.getKeyParamNumber(类型) <a id="cryptrsaObject.getKeyParamNumber" href="#cryptrsaObject.getKeyParamNumber">&#x23;</a>
获取数值类型密钥参数

### cryptrsaObject.getKeySpec() <a id="cryptrsaObject.getKeySpec" href="#cryptrsaObject.getKeySpec">&#x23;</a>
返回当前密钥类型,  
返回值为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE

### cryptrsaObject.getUserKey(keySpec) <a id="cryptrsaObject.getUserKey" href="#cryptrsaObject.getUserKey">&#x23;</a>
获取密钥,并设置为默认密钥  
参数指定密钥类型，例如 _AT_SIGNATURE  
成功返回true

### cryptrsaObject.hasKey() <a id="cryptrsaObject.hasKey" href="#cryptrsaObject.hasKey">&#x23;</a>
检测是否已设置密钥

### cryptrsaObject.hash(字符串,是否大写,返回16位结果,算法) <a id="cryptrsaObject.hash" href="#cryptrsaObject.hash">&#x23;</a>
计算哈希值,  
除第一个参数以外,其他参数可选  
默认使用MD5算法

### cryptrsaObject.hashFile(文件路径,是否大写,算法) <a id="cryptrsaObject.hashFile" href="#cryptrsaObject.hashFile">&#x23;</a>
计算哈希值,  
除第一个参数以外,其他参数可选  
默认使用MD5算法

### cryptrsaObject.importKey(密钥,选项,公钥句柄) <a id="cryptrsaObject.importKey" href="#cryptrsaObject.importKey">&#x23;</a>
导入密钥,  
密钥可以是结构体或字符串格式,  
参数2可选,参数3可选  
成功返回true,失败返回null,错误信息

### cryptrsaObject.importPemKey() <a id="cryptrsaObject.importPemKey" href="#cryptrsaObject.importPemKey">&#x23;</a>
参数 @1 使用字符串指定 PEM 格式密钥。  
如果导入成功返回 PEM 格式头

### cryptrsaObject.importPemKeyFile() <a id="cryptrsaObject.importPemKeyFile" href="#cryptrsaObject.importPemKeyFile">&#x23;</a>
参数 @1 使用字符串指定 PEM 格式密钥文件。  
如果导入成功返回 PEM 格式头

### cryptrsaObject.importPrivateKeyInfo(certPrivateKeyInfo,encodingType,structType) <a id="cryptrsaObject.importPrivateKeyInfo" href="#cryptrsaObject.importPrivateKeyInfo">&#x23;</a>
导入私钥信息(CRYPT_PRIVATE_KEY_INFO),参数@1为buffer或字符串,  
用法参考 crypt.rsa中相关函数,  
成功返回true

### cryptrsaObject.importPrivateKeyPkcs1Raw() <a id="cryptrsaObject.importPrivateKeyPkcs1Raw" href="#cryptrsaObject.importPrivateKeyPkcs1Raw">&#x23;</a>
导入 PKCS#1 格式私钥,  
参数@1为string或buffer类型私钥

### cryptrsaObject.importPrivateKeyPkcs1RawFromPem() <a id="cryptrsaObject.importPrivateKeyPkcs1RawFromPem" href="#cryptrsaObject.importPrivateKeyPkcs1RawFromPem">&#x23;</a>
导入 PKCS#1 格式私钥（PEM）,  
参数@1为string或buffer类型私钥

### cryptrsaObject.importPrivateKeyPkcs8() <a id="cryptrsaObject.importPrivateKeyPkcs8" href="#cryptrsaObject.importPrivateKeyPkcs8">&#x23;</a>
导入通用的 PKCS#8 格式私钥,  
参数@1为string或buffer类型私钥

### cryptrsaObject.importPrivateKeyPkcs8FromPem() <a id="cryptrsaObject.importPrivateKeyPkcs8FromPem" href="#cryptrsaObject.importPrivateKeyPkcs8FromPem">&#x23;</a>
导入通用的 PKCS#8 格式私钥（PEM）,  
参数@1为string或buffer类型私钥

### cryptrsaObject.importPublicKeyInfo(certPublicKeyiNFO,encodingType) <a id="cryptrsaObject.importPublicKeyInfo" href="#cryptrsaObject.importPublicKeyInfo">&#x23;</a>
导入公钥信息(CERT_PUBLIC_KEY_INFO),参数@1为buffer或字符串,  
用法参考 crypt.rsa中相关函数,  
成功返回true

### cryptrsaObject.importPublicKeyPkcs1Raw() <a id="cryptrsaObject.importPublicKeyPkcs1Raw" href="#cryptrsaObject.importPublicKeyPkcs1Raw">&#x23;</a>
导入 PKCS#1 格式公钥,  
参数@1为string或buffer类型私钥

### cryptrsaObject.importPublicKeyPkcs1RawFromPem() <a id="cryptrsaObject.importPublicKeyPkcs1RawFromPem" href="#cryptrsaObject.importPublicKeyPkcs1RawFromPem">&#x23;</a>
导入 PKCS#1 格式公钥（PEM）,  
参数@1为string或buffer类型私钥

### cryptrsaObject.importPublicKeyX509() <a id="cryptrsaObject.importPublicKeyX509" href="#cryptrsaObject.importPublicKeyX509">&#x23;</a>
导入通用的 SPKI（Subject Public Key Info）格式公钥,  
参数@1为string或buffer类型公钥数据

### cryptrsaObject.importPublicKeyX509FromPem() <a id="cryptrsaObject.importPublicKeyX509FromPem" href="#cryptrsaObject.importPublicKeyX509FromPem">&#x23;</a>
导入通用的 SPKI（Subject Public Key Info）格式公钥（PEM）,  
参数@1为string或buffer类型公钥数据

### cryptrsaObject.lastHash <a id="cryptrsaObject.lastHash" href="#cryptrsaObject.lastHash">&#x23;</a>
最后一次调用createHashXXX() 系列函数创建的哈希对象

### cryptrsaObject.release() <a id="cryptrsaObject.release" href="#cryptrsaObject.release">&#x23;</a>
释放密钥容器（CSP）。  
此函数可在对象析构时自动调用

### cryptrsaObject.setInitVector(字符串向量,选项) <a id="cryptrsaObject.setInitVector" href="#cryptrsaObject.setInitVector">&#x23;</a>
设置初始化向量,成功返回true,  
参数2可选

### cryptrsaObject.setKey(密钥句柄) <a id="cryptrsaObject.setKey" href="#cryptrsaObject.setKey">&#x23;</a>
设置新的默认密钥句柄,  
该密钥将由密钥容器管理,不需要释放该密钥  
参数为null则删除密钥

### cryptrsaObject.setKeyParam(类型,数据值,选项) <a id="cryptrsaObject.setKeyParam" href="#cryptrsaObject.setKeyParam">&#x23;</a>
设置加密参数  
数据值可以是结构体,字符串，或 buffer 对象,  
如果数据值一个数值参数,则转换为表示32位整型数值地址的结构体指针  
成功返回true,失败请使用 ..lasterr()获取错误信息

### cryptrsaObject.setKeyParamMode(_CRYPT_MODE) <a id="cryptrsaObject.setKeyParamMode" href="#cryptrsaObject.setKeyParamMode">&#x23;</a>
设置加密模式  
成功返回true,失败请使用 ..lasterr()获取错误信息

### cryptrsaObject.setKeyParamPadding(_PKCS5) <a id="cryptrsaObject.setKeyParamPadding" href="#cryptrsaObject.setKeyParamPadding">&#x23;</a>
设置加密填充方式  
成功返回true,失败请使用 ..lasterr()获取错误信息

### cryptrsaObject.setPassword("字符串参数",HASH算法ID,加密算法ID,选项) <a id="cryptrsaObject.setPassword" href="#cryptrsaObject.setPassword">&#x23;</a>
设置会话密钥  
成功返回密码容器对象,失败返回null

### cryptrsaObject.sign(keySpec,flags) <a id="cryptrsaObject.sign" href="#cryptrsaObject.sign">&#x23;</a>
返回签名  
可选用 @keySpec 参数中指定密钥类型,  
@flags 不必指定

### cryptrsaObject.signToBase64(keySpec,flags) <a id="cryptrsaObject.signToBase64" href="#cryptrsaObject.signToBase64">&#x23;</a>
签名并反转字节序（通用格式），进行 Base64 编码后返回,  
可选用 @keySpec 参数中指定密钥类型,  
@flags 参数不必指定

### cryptrsaObject.signToUrlBase64(keySpec,flags) <a id="cryptrsaObject.signToUrlBase64" href="#cryptrsaObject.signToUrlBase64">&#x23;</a>
签名并反转字节序（通用格式），进行 UrlBase64 编码后返回。  
可选用 @keySpec 参数中指定密钥类型,  
@flags 参数不必指定

### cryptrsaObject.verifyFromBase64(signBase64,flags) <a id="cryptrsaObject.verifyFromBase64" href="#cryptrsaObject.verifyFromBase64">&#x23;</a>
验证签名。  
对参数 @signBase64 指定的签名进行 Base64 解码并反转字节序（为了兼容通用格式）。  
@flags 参数不必指定,  
验证签名以前必须首先导入公钥,并创建哈希对象

### cryptrsaObject.verifyFromUrlBase64(signBase64,flags) <a id="cryptrsaObject.verifyFromUrlBase64" href="#cryptrsaObject.verifyFromUrlBase64">&#x23;</a>
验证签名。  
对参数 @signBase64 指定的签名进行 UrlBase64 编码并反转字节序（为了兼容通用格式）。  
@flags 参数不必指定,  
验证签名以前必须首先导入公钥,并创建哈希对象

### cryptrsaObject.verifySignature(sign,flags) <a id="cryptrsaObject.verifySignature" href="#cryptrsaObject.verifySignature">&#x23;</a>
验证签名,  
参数@1为签名字符串,其他参数可选  
验证签名以前必须首先导入公钥,并创建哈希
