7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RSA 鍵ペアを使って任意の文字列を暗号化・復号する

Last updated at Posted at 2019-02-08

はじめに

ある文字列を気軽に暗号化・復号したい場合に、端末の ~/.ssh 配下にある RSA 鍵ペアを使えばいいのではと思いついたので、調べてみました。

方法

準備

まず公開鍵 ~/.ssh/id_rsa.pub と秘密鍵 ~/.ssh/id_rsa のペアを作成します。

$ ssh-keygen -t rsa -b 4096

ただし出力された公開鍵は ssh.com (SECSH) 形式で OpenSSL では扱えないので、~/.ssh/id_rsa.pub.pem として PEM 形式に変換します。

$ ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > ~/.ssh/id_rsa.pub.pem

暗号化

佐倉杏子 という文字列を公開鍵で暗号化して、出力されたバイナリを 16 進数文字列に変換します。

$ echo '佐倉杏子' | openssl rsautl -encrypt -pubin -inkey ~/.ssh/id_rsa.pub.pem | xxd -p | tr -d '\n'
19901805998070d3ae93f59ad3caa0ae63dac078736779a3dbfad76c152a02e9729c2c3f43fd45db5b98c8141345b63d601afe16808705f1b6a911282cd99bc7a2a44a2c5437f6bb45b220230a4d156a7ccc29ce2cbcc457f83f741b0b06aca66c77da8e6a634bb57723076ae9c17c1cf2d80cdbf29aa3846e2d446bed9ac0879b4c60973b6414d91c6309c570857459d5f474ad3edeb3d8b358e43d7484061558b20ea341a864e67559970c1925677a740ed454fd20d654230698cbdeb9cde1647100078ec3903d53bc41001983a5a246e1095860b2c6c082e417c4e8dadef98b67e97fd1e2503f6d42cae1ca7e582aa1b3f864395281ca01f4b53070c2395da984b71044bb1b664cddf288fb41584eec7011b9f8b5f5097c2ad84d65251fe856306743b7c6fdb7d9cc7f1cc1fe1e4a060a3551550c6a853b05199fd9a40dbbee63ad9bd1e3d6808c99ab50ae344c17c0e2188227f8da25c033161dd5d3394b3157fd75aa71c82475f62c023254b9b58b230928abef8bee4ff227cd5697113cc0c805599b949f79811120e1bad2e51756817eb532727bcd5aa844fe2780dfbc53ecd0875138ed9ae65c3fa91455a5c3b3d252d06bb5f9dc5459f68c1f66d1f136a3e6608ab744e1dbddde73b5fa00ca1c52906544f5e01c2e7e57b262c7b2309bbef0cae3095687b62565f44e8698822e5b309e18284b66081e036224838eaf

復号

16 進数文字列をバイナリに変換し、それを秘密鍵で復号します。

$ ENCRYPTED=19901805998070d3ae93f59ad3caa0ae63dac078736779a3dbfad76c152a02e9729c2c3f4b98c8141345b63d601afe16808705f1b6a911282cd99bc7a2a44a2c5437f6bb45b220230a4d156a7ccc29ce2cbcc457f83f741b0b06aca66c77da8e6a634bb57723076ae9c17c1cf2d80cdbf29aa3846e2d446bed9ac0879b4c60973b6414d91c6309c570857459d5f474ad3edeb3d8b358e43d7484061558b20ea341a864e67559970c1925677a740ed454fd20d654230698cbdeb9cde1647100078ec3903d53bc41001983a5a246e1095860b2c6c082e417c4e8dadef98b67e97fd1e2503f6d42cae1ca7e582aa1b3f864395281ca01f4b53070c2395da984b71044bb1b664cddf288fb41584eec7011b9f8b5f5097c2ad84d65251fe856306743b7c6fdb7d9cc7f1cc1fe1e4a060a3551550c6a853b05199fd9a40dbbee63ad9bd1e3d6808c99ab50ae344c17c0e2188227f8da25c033161dd5d3394b3157fd75aa71c82475f62c023254b9b58b230928abef8bee4ff227cd5697113cc0c805599b949f79811120e1bad2e51756817eb532727bcd5aa844fe2780dfbc53ecd0875138ed9ae65c3fa91455a5c3b3d252d06bb5f9dc5459f68c1f66d1f136a3e6608ab744e1dbddde73b5fa00ca1c52906544f5e01c2e7e57b262c7b2309bbef0cae3095687b62565f44e8698822e5b309e18284b66081e036224838eaf
$ echo -n $ENCRYPTED | xxd -r -p | openssl rsautl -decrypt -inkey ~/.ssh/id_rsa
佐倉杏子

参考

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?