普段、社外とやり取りしないので、どれがメインストリームなのかわからないけど、
相手の人もエンジニアっぽかったから、とりあえず公開鍵もらって、暗号化することにした。
送られてきたのはGPG公開鍵ではなくssh公開鍵だったので、調べながらやってみた。
OpenSSHで作った公開鍵をOpenSSLで扱えるようにするのにハマったけど、
手順は簡単だったのでメモっとく。
1. Opensslでも扱えるPKCS#8形式にssh公開鍵を変換する
ssh-keygen -f <ssh公開鍵> -e -m PKCS8 > hoge
ssh公開鍵のフォーマットはこんな感じ
ssh-rsa AAAAB3NzaC1yc2EAaAADAQABAAABAQDvi3d/Y7oXGqS72okWF/EVYotL/SGkVk7tngCBkEDh3BznfU7XURi5p/uf7Hvzy1IWqJyne5umEyvMR6svPs0+kIQpcClpPvyz5KFWgSCJIA3dsYI4sQNTfJfSEaDBUyVNCjcWmpuvwbnRdTv7QVBZKp8Rgc7bk+8x40aD2GtUZ1YsuqpnI4nsxyCuoPc+jH1trMIDettUPCK8evMsJPvBJkIVULEJWik/qgjjFsGtAzJJyFFy3meXN9u4uPYYKKVgH2hM705QS/ucNULhp2Ey1tOcqYgfnTVJj320up0s9acsljJv6cQK60dzVC9XhN5ECabGQhgfKKCozaGm/hWB
変換後のやつ
BEGIN PUBLIC KEYという文言に注意する(PEM形式とは違う)
-----BEGIN PUBLIC KEY-----
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufa==
-----END PUBLIC KEY-----
2. 暗号化
さっき作った鍵をつかってopensslコマンドで暗号化
-pubinというオプションをしていて公開鍵で暗号化することを明示してあげる
openssl rsautl -encrypt -pubin -inkey hoge -in fuga.csv -out fuga.csv.encrypted
以上
復号化は下のコマンドでできる
openssl rsautl -decrypt -inkey private_key -in fuga.csv.encrypted -out fuga.csv.decrypted
小技:https://github.com/<username>.keys
から相手の公開鍵拾えるし便利