源码:
之前使用GO已经可以实现秘钥交换了,这里使用浏览器发送数据,与后端服务实现秘钥交换,记录一下实现的基本函数:
// 生成密钥对,并保存到全局变量中
async function createDHPair() {
// 生成新的ECDH密钥对
const keyPair = await window.crypto.subtle.generateKey(
{
name: "ECDH",
namedCurve: "P-256"
},
true, // 允许导出私钥
["deriveKey", "deriveBits"] // 导出私钥的权限
);
return keyPair;
};
async function getPublicKey(keyPair) {
const publicKey = await crypto.subtle.exportKey("spki", keyPair.publicKey);
return publicKey;
}
async function getPublicKeyRaw(keyPair) {
const publicKey = await crypto.subtle.exportKey("raw", keyPair.publicKey);
return publicKey;
}
// async function getPrivateKey(keyPair) {
// const publicKey = await crypto.subtle.exportKey("pkcs8", keyPair.publicKey);
// return publicKey;
// }
async function