Node.js keyObject.type类
在 NodeJS 中,KeyObject 类代表特定算法的密钥,并包含用于处理加密密钥实例的内置函数或方法。
KeyObject.from(key): 这是一个内置于 KeyObject 类中的静态方法。用于从加密密钥或密钥对生成密钥对象。
语法: 将加密密钥实例转换为密钥对象形式的语法为:
- 键(key): 对称或非对称密钥
- keyObject.type: KeyObject的type方法指示生成的密钥是私有的、公共的还是私有的。对于对称密钥,keyObject.type返回secret,因为同一个密钥用于加密和解密。在使用非对称密钥时,加密和解密使用两个不同的密钥(公钥和私钥)。公钥对所有人都是可知的,但私钥保持私有,因此该方法对于私钥keyObject返回private类型,对于公钥keyObject返回public类型。
步骤1: 在终端中运行以下命令设置你的Node.js项目的package.json:
步骤2: 创建一个描述代码的app.js文件。
步骤3: 现在从NodeJS的crypto模块中导入所需的类或包。
步骤4: Subtle.generateKey()方法返回一个密码密钥(可以是对称密钥或非对称密钥对)。
语法: 以下是subtle.generateKey()方法的语法:
参数:
- Algorithm: 一个对象,指定了我们想要生成的密钥类型以及进一步的算法细节。
- Extractable: 一个布尔变量,表示密钥是否可以被特定技术(如SubtleCrypto.exportKey())导出。如果为true,则密钥不可被导出。
- Keyusages: 一个数组,列出使用创建的密钥所必须采取的步骤。
以下是可能的值:
索引 | 值 | 描述 |
---|---|---|
1 | ['sign'] |
表示该密钥可用于生成数字签名。 |
2 | ['verify'] |
表示该密钥将用于验证数字签名。 |
3 | ['encrypt'] |
表示该密钥将用于加密通信。 |
4 | ['decrypt'] |
表示该密钥将用于解密通信。 |
5 | ['deriveKey'] |
表示该密钥将用于衍生密钥。 |
6 | ['deriveBits'] |
表示该密钥将用于衍生位数组。 |
7 | ['wrapKey'] |
表示可导出的密钥将以加密形式存储。 |
8 | ['unwrapKey'] |
表示可导出的密钥将以解密形式存储。 |
返回值: 一个包含结果值以及一些附加信息的对象。
步骤5: 使用 KeyObject.from(key) 方法并将生成的加密密钥值传递给该方法以生成keyObject。
示例1: 在这个示例中,我们将使用“AES-CBS”算法生成一个加密密钥,将这个加密密钥转换为keyObject,并检查这个keyObject的类型。
App.js
输出:
示例2: 在这个示例中,我们将使用RSASSA-PKCS1-V1_5算法生成公钥和私钥的加密密钥对,并且针对每个加密密钥-公钥和私钥都运行keyObject.type方法。
输出:
参考文献: https://nodejs.org/api/crypto.html#class-keyobject