OpenPGP.jsで生成した公開鍵で暗号化して秘密鍵で復号する
code:ts
import * as openpgp from 'openpgp';
(async () => {
const key = await openpgp.generateKey({ curve: 'brainpoolP512r1', userIds: name: 'Test', email: 'test@test.com' } });
console.log('key.publicKeyArmored:\n', key.publicKeyArmored);
console.log('key.privateKeyArmored:\n', key.privateKeyArmored);
const raw = new Uint8Array(1, 2, 3); const {message} = await openpgp.encrypt({
message: openpgp.message.fromBinary(raw),
publicKeys: (await openpgp.key.readArmored(key.publicKeyArmored)).keys,
armor: false
});
const encrypted = message.packets.write();
console.log('encrypted: ', encrypted);
const { data: decrypted } = await openpgp.decrypt({
message: await openpgp.message.read(encrypted),
privateKeys: (await openpgp.key.readArmored(key.privateKeyArmored)).keys,
format: "binary",
});
console.log('decrypted: ', decrypted);
})();
出力例
code:出力例
key.publicKeyArmored:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP.js v4.10.4
xpMEXuDMchMJKyQDAwIIAQENBAMEVPZ/dn4ZKPi/A33VOb6NKlU5Q26gkA4N
hmseRSmHpJLdP4NKcyDlMgKGM5a6HsJ8adVEEc+u4uC6wEpW50IaQAIvcMRu
mV+xdU2Sh93JQn3xsaY3b405WX+PO034TP1lh0WL0dJSqEHeEWDgXdi379Td
ZSzFTb/HnKpiwgVTJifNFFRlc3QgPHRlc3RAdGVzdC5jb20+wrgEEBMKACAF
Al7gzHIGCwkHCAMCBBUICgIEFgIBAAIZAQIbAwIeAQAKCRB4ejgwtz298QaC
Af9XeCkoT8fthhr/nb2SJxoC9pBCzLi7mkmrXBJY7NAz+U8cfoThFoAWc4dM
K+HfgIg6kT22WceoBvALzS5B+9c0AgCBjn4WvX6Nfqw2lXWxeWCd2eGZjbHr
SK6xdOQOAkPUp+vMOKApiF0OtMOXaW43S941lpYXrNEeMIeG5LJk2BoJzpcE
XuDMchIJKyQDAwIIAQENBAMEHk1hbb07/IQLcsqS/anQmM/+NTW+F8eA2nlj
jtD+Je1foMqE9c5jDmcEWDzk8iED9BsmNlaSzW/QPLdp20SXzS7mFnnmvdK0
YucSgqxekV/INYdgICMuHz1VEda1p87gz4y1O/N5viwAritfuc8gyHSGt7L1
uIZfT1eQriAwTaUDAQoJwqEEGBMKAAkFAl7gzHICGwwACgkQeHo4MLc9vfHP
fwH/VODGCn4lbOMDzYhwFw3S+/GlfnlFQDJdl20NEnAok+bCoTf0vcBag0u8
5P03PI4Tt4RhZdTgkRT1flkyVo+IPQIAqppjrRVl/BIGtobPATxoaJoOoUvN
xw3PhMb9HthrcdzCLQruDrf0C3KyTUaA+Ljrv9ck1/Gir66AJXmTr+vM8g==
=sSwM
-----END PGP PUBLIC KEY BLOCK-----
key.privateKeyArmored:
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: OpenPGP.js v4.10.4
xcAYBF7gzHITCSskAwMCCAEBDQQDBFT2f3Z+GSj4vwN91Tm+jSpVOUNuoJAO
DYZrHkUph6SS3T+DSnMg5TIChjOWuh7CfGnVRBHPruLgusBKVudCGkACL3DE
bplfsXVNkofdyUJ98bGmN2+NOVl/jztN+Ez9ZYdFi9HSUqhB3hFg4F3Yt+/U
3WUsxU2/x5yqYsIFUyYnAAH/W6IWStHSHwYese53HTOuBt9v8kiVyI8ueVlL
b4IlrJy2h/oWcThYzKQZXXLEINrmq6iBytkns/Fd2BOifb+n6yG+zRRUZXN0
IDx0ZXN0QHRlc3QuY29tPsK4BBATCgAgBQJe4MxyBgsJBwgDAgQVCAoCBBYC
AQACGQECGwMCHgEACgkQeHo4MLc9vfEGggH/V3gpKE/H7YYa/529kicaAvaQ
Qsy4u5pJq1wSWOzQM/lPHH6E4RaAFnOHTCvh34CIOpE9tlnHqAbwC80uQfvX
NAIAgY5+Fr1+jX6sNpV1sXlgndnhmY2x60iusXTkDgJD1KfrzDigKYhdDrTD
l2luN0veNZaWF6zRHjCHhuSyZNgaCcfAHARe4MxyEgkrJAMDAggBAQ0EAwQe
TWFtvTv8hAtyypL9qdCYz/41Nb4Xx4DaeWOO0P4l7V+gyoT1zmMOZwRYPOTy
IQP0GyY2VpLNb9A8t2nbRJfNLuYWeea90rRi5xKCrF6RX8g1h2AgIy4fPVUR
1rWnzuDPjLU783m+LACuK1+5zyDIdIa3svW4hl9PV5CuIDBNpQMBCgkAAfwJ
wvHiUs67IK/L4wqc1NyA74OwPe50Y1d8+Dmy/ZHr/tjtWptqjAyfw370r03G
V63xemmg5rjhbkAaF0zyGveaJyvCoQQYEwoACQUCXuDMcgIbDAAKCRB4ejgw
tz298c9/Af9U4MYKfiVs4wPNiHAXDdL78aV+eUVAMl2XbQ0ScCiT5sKhN/S9
wFqDS7zk/Tc8jhO3hGFl1OCRFPV+WTJWj4g9AgCqmmOtFWX8Ega2hs8BPGho
mg6hS83HDc+Exv0e2Gtx3MItCu4Ot/QLcrJNRoD4uOu/1yTX8aKvroAleZOv
68zy
=DG0s
-----END PGP PRIVATE KEY BLOCK-----
encrypted: Uint8Array [
193, 190, 3, 24, 11, 230, 189, 151, 245, 164, 217, 18,
4, 3, 4, 44, 7, 232, 228, 125, 81, 253, 72, 176,
194, 69, 47, 162, 121, 69, 171, 91, 65, 210, 31, 165,
244, 137, 34, 39, 11, 201, 87, 151, 182, 175, 69, 203,
153, 170, 238, 25, 87, 134, 153, 62, 95, 26, 24, 157,
146, 141, 218, 172, 3, 167, 37, 50, 107, 115, 72, 2,
181, 218, 5, 24, 29, 97, 42, 32, 36, 110, 241, 101,
122, 150, 225, 201, 134, 147, 156, 225, 131, 18, 163, 44,
14, 6, 140, 152,
... 153 more items
]