下你所需,载你所想!
汇集开发技术源码资料

window.crypto库和QuickJs引擎封装及调用

:336.187KB :1 :2020-07-08 14:09:03

部分简介

其中在telegram登录首页就在使用该算法 应该让不少哥们头疼

其实这个加密常见于浏览器内置接口 window.crypto.subtle

该接口不仅支持该类型的加密 且支持非常多的算法加密如RSA DES 等等 这里就演示AES-GCM-128这个类型。

format 是一个字符串,描述要导入的密钥的数据格式。可以是以下之一:
----------raw:原始格式。
----------pkcs8:PKCS#8格式。
----------spki:SubjectPublicKeyInfo格式。
----------jwk:JSON Web密钥格式。

keyData是ArrayBuffer,TypedArray,a DataView或JSONWebKey包含给定格式的键的对象。

algorithm 是一个字典对象,用于定义要导入的密钥的类型并提供额外的算法特定参数。
对于RSASSA-PKCS1-v1_5, RSA-PSS或 RSA-OAEP:传递RsaHashedImportParams对象。
对于ECDSA或ECDH:传递 EcKeyImportParams对象。
对于HMAC:传递一个HmacImportParams对象。
对于AES-CTR,AES-CBC,AES-GCM或AES-KW:传递标识算法的字符串或形式为的对象{ "name": ALGORITHM },其中ALGORITHM 是算法的名称。
对于PBKDF2 :传递字符串PBKDF2。

extractable是Boolean表明它是否将有可能使用到导出密钥SubtleCrypto.exportKey()或SubtleCrypto.wrapKey()。

keyUsages是Array指示可以用钥匙做什么的指示。可能的数组值为:
----------encrypt:该键可用于发送encrypt消息。
----------decrypt:该键可用于发送decrypt消息。
----------sign:该键可用于发送sign消息。
----------verify:该密钥可用于verify签名。
----------deriveKey:可以在中使用密钥deriving a new key。
----------deriveBits:可以在中使用密钥deriving bits。
----------wrapKey:该键可能用于wrap a key。
----------unwrapKey:该键可能用于unwrap a key。

crypto.subtle.encrypt

const result = crypto.subtle.encrypt(algorithm,key,data);
algorithm是一个对象,用于指定要使用的算法以及所需的任何其他参数:
------------要使用RSA-OAEP,请传递一个RsaOaepParams对象。
------------要使用AES-CTR,请传递一个AesCtrParams对象。
------------要使用AES-CBC,请传递一个AesCbcParams对象。
------------要使用AES-GCM,请传递一个AesGcmParams对象。

window.crypto库和QuickJs引擎封装及调用

热门推荐

相关文章