公钥私钥对生成器 - 使用 JavaScript 生成和管理密钥对
公钥私钥对生成器
这段 JavaScript 代码使用椭圆曲线加密生成公钥私钥对,并在浏览器中提供管理功能。
extends layout
block content
.container
.card
h4.card-header 公钥 / 私钥对
.card-body
form.form-horizontal
.form-group
label.control-label(for='data') 私钥
.input-group
input.form-control#privateKey(aria-label='私钥', type='number')
span.input-group-btn
button.btn.btn-secondary#randomButton(type='button') 随机
.form-group
label.control-label(for='data') 公钥
input#publicKey.form-control(disabled)
script.
var EC = elliptic.elliptic().ec;
var ec = new EC('secp256k1');
var keypair = ec.genKeyPair();
if (Cookies.get('privateKey')) {
keypair = ec.keyFromPrivate(Cookies.get('privateKey'));
}
function update() {
var prv = keypair.getPrivate('hex');
var pub = keypair.getPublic('hex');
$('#privateKey').val(bigInt(prv, 16).toString());
$('#publicKey').val(pub);
Cookies.set('privateKey', prv.toString());
Cookies.set('publicKey', pub.toString());
}
function random() {
keypair = ec.genKeyPair();
update();
}
$(function() {
$('#randomButton').click(random);
$('#privateKey').bind('keyup', function() {
$('#privateKey').val($('#privateKey').val().replace(/\D/g, ''));
keypair = ec.keyFromPrivate(bigInt($('#privateKey').val()).toString(16));
update();
});
update();
});
代码解释:
- 引入依赖库: 代码使用 'elliptic' 库进行椭圆曲线加密操作。
- 创建椭圆曲线对象: 使用
elliptic.elliptic().ec创建一个 'secp256k1' 椭圆曲线对象。 - 生成或加载密钥对:
- 使用
ec.genKeyPair()生成新的公钥私钥对。 - 如果浏览器 Cookies 中存在 'privateKey',则使用该私钥生成公钥私钥对。
- 使用
update()函数:- 获取私钥和公钥的十六进制字符串表示。
- 将十六进制字符串转换为十进制字符串,并更新到相应的表单字段中。
- 使用 Cookies 存储私钥和公钥,以便在刷新页面时保留。
random()函数:- 生成新的随机公钥私钥对。
- 调用
update()更新表单字段和 Cookies。
- 事件处理:
- 点击 '随机' 按钮时,调用
random()生成新的密钥对。 - 在私钥输入框中输入时,调用
update()更新公钥和 Cookies。
- 点击 '随机' 按钮时,调用
- 初始化:
- 在页面加载完成后,调用
update()初始化表单字段和 Cookies。
- 在页面加载完成后,调用
这段代码提供了一个简单的方法,可以在浏览器中生成和管理公钥私钥对,用于各种加密和安全应用程序。
原文地址: https://www.cveoy.top/t/topic/fzWk 著作权归作者所有。请勿转载和采集!