node.js で公開鍵/秘密鍵によるデータの暗号化/復号

import keypair from 'keypair'
import crypto from 'crypto'

const encrypt = (raw, publicKey) => {
  const encrypted = crpyto.publicEncrypt(publicKey, new Buffer(raw))
  return encrypted.toString('base64')

const decrypt = (encrypted, privateKey)=> {
  const decrypted = privateDecrypt(privateKey, new Buffer(encrypted, 'base64'))
  return decrypted.toString('utf8')

const pair = keypair()
const data = 'foo bar baz'

const encrypted = encrypt(data, pair.public)
const decrypted = decrypt(encrypted, pair.private)

注意: 簡単のため npm の keypair モジュールを使って公開鍵、秘密鍵を生成しているが、メモリ操作などによって脆弱な鍵を生成させられる可能性が排除できないので、 実際には openssl などの信頼できる実装を使ってください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.