tips:gnupg:encrypt

Encrypt - GnuPG

  • ここでは、署名・暗号化と検証・復号化についてとりあつかいます。
  • 基本的にテキストファイル出力にするオプション -armor (-a) をつけて解説し、出力は .asc というテキストファイルになります。なければバイナリファイル .gpg になるでしょう。
  • 秘密鍵は arqtan@mail.asaasa.tk を用います。
  • $ gpg -ac filename
    • $ gpg -armor –symmetric filename と同じ
    • 共通鍵暗号を用いる。パスワードZIPとかと理屈は同じ。
    • user$ echo -e Hello, world! > hello.txt
      user$ cat hello.txt 
      Hello, world!
       
      user$ gpg -ac --batch --passphrase hello hello.txt
      (パスワード hello で hello.txt を暗号化する。バッチ指定、パスフレーズ指定することで自動化しているが、省略した場合はパスワード入力ダイアログが出てくる)
       
      user$ cat hello.txt.asc
      -----BEGIN PGP MESSAGE-----
       
      jA0ECQMKv7oanOhbJFX/0koBP0tRONeL9b1vmQEDEhVbLu/BWJKT3rJOPg9/DehB
      JbPnkjXFQsQeNoyF//aKwJZToJQ6IaHklF7C/u6ZwmIbAAiNIcHVvJWp7w==
      =NYCV
      -----END PGP MESSAGE-----
       
      user$ _
  • gpg -o output.txt -d filename
    • gpg –output output.txt –decrypt filename と同じ
    • 暗号を解除。なお、これについては公開鍵を用いた暗号化ファイルについても同じである。
      • $ gpg -o hello.txt -d hello.txt.asc
      • $ gpg -d hello.txt.asc > hello.txt
      • いずれも同じ結果が得られる。
  • $ gpg -aes -u arqtan -r arqtan -o hello.txt.asc hello.txt
    • 自分自身で署名し、自分用に暗号化する
    • -u で発信元を、-r で発信先を指定する。
    • -aes の a がテキスト化、 e が暗号化、 s が署名を意味する。
  • $ cat hello.txt.asc
    • 例によって内容確認
    • -----BEGIN PGP MESSAGE-----
      
      hF4DMwUa1axuYvYSAQdA8jp/o3K3VKr6V8++qfY93l+0LvC9Rpxz9noyPc0S7SYw
      g+HFgEiHsTtpRdU18iZbIiSOXLaA7dlFJmrFLiepcFGPdl6bqbeSh1PfrpRmoHmn
      1MArAQkCEBnVXnG9l5KGsxpHBLgO5rzv2G8R6oE9E2A+sEM/nQId5R7F9/VNqBJ3
      3vAIHbb5qzNUUUpmZGxEJ7Kx7quvwLHAVvwVU6plkdhOi+GopGBxKiZchr4Nztx1
      kHutnApyj45DcDwftAcV7HgUE4aVuHl3nY3rGKgrbn5Z/1HQNhGE2vdkckTeVruy
      /EsJfsOVHQt8Oqe3S6sB1vlxAycsaUYKkb4EUQxndaQ8LlCPlCW2Sab7Gf3tv6NK
      GDGJXpCKrGA13xvbS4/EodVyCsIxs1ZRSwjd2rTivqNOj0KvUJ1KqsF8rwAvYQ==
      =OQyV
      -----END PGP MESSAGE-----
  • $ gpg -o hello.txt -d hello.txt.asc
  • $ gpg hello.txt.asc > hello.txt
    • 暗号解除と署名確認をする

「-aes」のところを -ae や -as にしてみよう。どっちみち、暗号化されてるような状態で出力される。( as の場合は暗号化されてないので署名確認くらいにはなるか)

  • テキスト内部に署名するときは –clear を用いる。
    • $ gpg -a -u arqtan –clear hello.txt
    • $ cat hello.txt.asc
      • -----BEGIN PGP SIGNED MESSAGE-----
        Hash: SHA512
        
        Hello, world!
        -----BEGIN PGP SIGNATURE-----
        
        iIwEARYKADQWIQRVupxjR5TvN0UiEfFVBc8Z0S0IggUCaMh80BYcYXJxdGFuQG1h
        aWwuYXNhYXNhLnRrAAoJEFUFzxnRLQiCp2MBAMs1wWL6cC+yNAcRpTYobwK1E0J3
        c5d3XJAWVJGxl+pMAQDhbFbAwJyE66N5CMaH3BUPorPt+5JZSR6OXPgM3gEqCQ==
        =5xVI
        -----END PGP SIGNATURE-----
      • $ gpg -d hello.txt.asc
      • バイナリの場合などは別ファイルに署名ファイルとして保存可能。
      • $ gpg -a -u arqtan –detach-sign hello.txt
      • hello.txt.asc ができるので、 gpg -d か gpg –verify で署名の検証ができる。
  • tips/gnupg/encrypt.1757969751.txt.gz
  • 最終更新: 2025/09/16 05:55
  • by asaasa