# 国密密钥交换JavaScript实现
该方法是使用国密进行密钥交换算法的js版本实现。实现方法详见[示例项目](./examples/react-project/src/App.tsx)。
步骤:
1. 安装依赖包
```bash
npm i gmlog
or
pnpm i gmlog
```
2. 导入使用
```typescript
import { SM2 } from 'gmlog'
```
3. 初始化
设置初始点坐标
```typescript
p = 0x8542d69e4c044f18e8b92435bf6ff7de457283915c45517d722edb8b08f1dfc3n
a = 0x787968b4fa32c3fd2417842e73bbfeff2f3c848b6831d7e0ec65228b3937e498n
b = 0x63e4c6d3b23b0c849cf84241484bfe48f61d59a5b16ba06e6e12d1da27c5249an
n = 0x8542d69e4c044f18e8b92435bf6ff7dd297720630485628d5ae74ee7c32e79b7n
G = [0x421debd61b62eab6746434ebc3cc315e32220b3badd50bdc4c4e6c147fedd43dn, 0x0680512bcbb42c07d47349d2153b70c4e5d7fdfcbfa36ea1a85841b9e46e09a2n]
h = 1n
```
设置身份(也可以为空)
```typescipt
IDA='ALICE123@YAHOO.COM'
IDB='BOB123@YAHOO.COM'
```
将上面设置的椭圆曲线上的点赋值给导入的`SM2`对象。
```typescript
const curveParam: any[] = [
p,
a,
b,
n,
G,
h,
];
const sm = new SM2(...curveParam);
// 生成SMA
const smA = new SM2(...curveParam, IDA as any, privateKeyA, publicKeyA as any);
```
4. 生成密钥对
A要完成密钥协商需要A的密钥对和B的临时密钥对。同理,B要完成密钥协商也要A的临时密钥对和B的密钥对。以A为例,在A这侧需要生成两个密钥对。
生成方式使用`sm.genKeyPair()`方法。
生成临时密钥使用`sm.agreement_initiate()`方法。
在获得临时密钥后,将临时密钥的和正式密钥的公钥都发送给B,同理A收到B的临时密钥和正式密钥的公钥后即可以开始密钥协商。
```typescript
const { res: res1, content: content1 } = smA.agreement_confirm(
rKeyA.privateKey as bigint, //A的临时密钥私钥
rKeyA.publicKey as { x: bigint, y: bigint }, // A的临时密钥公钥
rKeyB.publicKey as { x: bigint, y: bigint }, // b的临时密钥公钥
publicKeyB as { x: bigint, y: bigint }, //B的正式密钥公钥
IDB, // B的ID 可为空
null,
option // 选项 可为空,取值为bool值
);
```
5. 获取密钥协商后的密钥
```typescript
let KA = null, // 密钥协商获取的密钥
SA = null;
if (option) {
KA = content1[0];
SA = content1[1];
} else {
KA = content1[0];
}
```
> {x:bigint,y:bigint}类型的密钥类型转化为十六进制字符串使用toString(16)方法。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~
资源推荐
资源详情
资源评论
收起资源包目录
《国密算法》--国密密钥交换算法.zip (61个子文件)
lib
index.mjs 66KB
index.umd.js 46KB
index.mjs.gz 19KB
index.d.ts 22B
sm.d.ts 2KB
utils.d.ts 509B
index.umd.js.gz 17KB
__test__
Function.test.ts 2KB
Class.test.ts 3KB
.eslintrc.js 354B
.github
workflows
deploy.yml 700B
vite.d.ts 22B
examples
react-project
tsconfig.node.json 184B
src
assets
react.svg 4KB
main.tsx 428B
App.tsx 12KB
vite.d.ts 22B
App.css 606B
vite-env.d.ts 38B
index.css 1KB
package.json 896B
public
vite.svg 1KB
uno.config.ts 840B
pnpm-lock.yaml 75KB
vite.config.ts 229B
index.html 366B
.gitignore 253B
tsconfig.json 559B
package.json 2KB
pnpm-lock.yaml 102KB
vite.config.ts 2KB
.gitignore 25B
.eslintignore 76B
tsconfig.json 370B
index.md 663B
README.md 3KB
packages
gm
utils
sm
sm2
utils.js 6KB
sm3.js 4KB
asn1.js 4KB
index.js 7KB
ec.js 8KB
sm3
index.js 3KB
index.js 115B
sm4
index.js 11KB
utils.ts 3KB
sm.ts 18KB
index.ts 22B
.vitepress
cache
deps_temp_3674eafa
vue.js.map 641KB
_metadata.json 269B
package.json 17B
vue.js 296KB
config.ts 1KB
theme
styles
vars.css 3KB
composables
sponsor.ts 1KB
authors.ts 113B
components
Contributors.vue 2KB
SvgImage.vue 389B
AsideSponsors.vue 491B
HomeSponsors.vue 419B
index.ts 650B
index.md 663B
共 61 条
- 1
资源评论
季风泯灭的季节
- 粉丝: 1861
- 资源: 3371
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功