参考:https://developer.mozilla.org/zh-CN/docs/Web/API/SubtleCrypto
什么是SubtleCrypto
SubtleCrypto 接口提供了许多底层加密功能, 可以使用它来进行加密和密钥管理
创建SubtleCrypto对象
# 注意是小写的crypto
var cpt = crypto.subtle;
Chrome Console 测试如下

importKey() 和 wrapKey() 方法的使用
只说这两个方法是因为我只用到这两个方法, 更多的方法使用可以参考上面参考链接
importKey()
const result = crypto.subtle.importKey(
format,
keyData,
algorithm,
extractable,
keyUsages
);
format是描述要导入密钥的数据格式的字符串。可以是以下之一:
raw:原始格式。pkcs8:PKCS#8格式。spki:SubjectPublicKeyInfo格式。jwk:JSON Web密钥格式。
keyData 是ArrayBuffer,TypedArray,aDataView或JSONWebKey包含给定格式的键的对象。
algorithm 是一个字典对象,用于定义要导入的密钥的类型并提供额外的算法特定参数。
extractable 是Boolean表明它是否将有可能使用到导出密钥
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。
该方法的返回值是一个Promise对象, 它作为一个CryptoKey对象来实现导入的密钥。
wrapKey()
const result = crypto.subtle.wrapKey(
format,
key,
wrappingKey,
wrapAlgo
);
format是一个字符串,描述了在加密密钥之前将导出密钥的数据格式。可以是以下之一:raw:原始格式。pkcs8:PKCS#8格式。spki:SubjectPublicKeyInfo格式。jwk:JSON Web密钥格式。
key是CryptoKey类型的对象。wrappingkey是CryptoKey类型的对象用于加密导出的密钥。wrapAlgo是一个对象,指定用于加密导出的密钥的算法以及任何所需的额外参数:- 要使用RSA-OAEP,请传递一个
RsaOaepParams对象。 - 要使用AES-CTR,请传递一个
AesCtrParams对象。 - 要使用AES-CBC,请传递一个
AesCbcParams对象。 - 要使用AES-GCM,请传递一个
AesGcmParams对象。 - 要使用AES-KW,请传递字符串
"AES-KW"或形式的对象{ "name": "AES-KW }。
- 要使用RSA-OAEP,请传递一个
该方法的返回值是一个Promise对象, 加密的结果是一个ArrayBuffer值

1072

被折叠的 条评论
为什么被折叠?



