暗号 復号 簡単な例

次へ

暗号 復号 の 例 その1

文字列の暗号化と復号をしてみよう

gpg --encrypt --recipient USER_ID file

簡単な文字列を作成してそれを 暗号化しそのあと復号してみよう。まず文字 列ファイルを暗号化する。

echo "文字列" > file_org

file_org を作成

$ echo "こんにちは!" >file_org
$ cat file_org 
こんにちは!
$ cat -v file_org 
M-$M-3M-$M-sM-$M-KM-$M-AM-$M-OM-!M-*

gpg --encrypt --recipient fdopstm file_org

では 最初は 以下のように 作成してみましょう

$ gpg --encrypt --recipient fdopstm file_org
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users          13  9月  2日  10:50 file_org
-rw-r--r--    1 fdopstm       users         614  9月  2日  10:54 file_org.gpg
$ file *
file_org:     ISO-8859 text
file_org.gpg: data

想像がついてると思いますが”file_org.gpg”は 画面の乱れる文字列です 抜粋を見てみると。

$ cat -v file_org.gpg 
M-^E^B^N^C...
...7M-f6M-^K

のように なっています。まあ これでも 問題はないのですが!

特に指定しな いと”.gpg”の 形の 暗号化された ファイルが出来るようです。

gpg --encrypt --armor --recipient fdopstm file_org

では こういう方法で作成してみましょう

$ gpg --encrypt  --armor --recipient fdopstm file_org
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users          13  9月  2日  10:50 file_org
-rw-r--r--    1 fdopstm       users         924  9月  2日  11:10 file_org.asc
-rw-r--r--    1 fdopstm       users         614  9月  2日  10:54 file_org.gpg
$ file *
file_org:     ISO-8859 text
file_org.asc: PGP armored data message
file_org.gpg: data

大きなファイルができています 中身を見てみましょう。

$ cat file_org.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.7 (GNU/Linux)

hQIOAwtErvLIwoU/EAf+Id2ShlXSfZuEOMusSYUsfQFjIFp0pk3iRX0JC4ubVoe9
wN+hdKbF/h9P3Ia4hwUqFi6R+hooaN6m7QYZHjE1LTm/Fqdu82ELhNYYnSKq/KjI
AfQFIk4kbF8jta+q1kSegO7I6O+Djh4cizzkoVMDj9d7eT6I0flXb956+NHZnkMa
zqPEMufOS1Mm+2cccfA7bMVoWZoHKB961M7/RQY9AAny6nLSmpQpc/rO38FAk/4H
zjWMxRYh2lfzC+IgTYDxdPsIaBt+KXCpU/RknhEhB3FRSyPGQfW4r6jClobfdjUK
tU7rXJS7fb1xA0Xo/1mMMp8nQovrzStXaYYX+vGtmQgAoy0lxT1GsPBqPg7IIWse
KiOhrfQRJpGcn9rlcelORV6KYcSgZPJta0oNf4EAGioFIqrfnNObE8lL4A+G/MCi
sYWh/3muDJEVQG0QlYWK1x1sdS1qYI8d6IMG9GgsIl/4M6MB+shkah7GDza9+jLn
Wkyn5Uko8uYCdmYmXIYdPcgELTRba3hYs3UoIwnmq0d4VPTy/M+gBgtEgUvwO4Pc
ha/THdx6XKMjbk4zlcO1siujLbieP+2+Fn/KCb32St7YMnfwicEIGuiICCNx/M/O
Nqvqlk7chnb2eZXyEFQGUWz6kKDsFzwb0CI1iEfigNIVIvoE0eNHE6CeFyJxBRqW
ydJRAdwfe+QasxNeio1fWbLEi63HiXUdVGXayks3/fhzcm930NcmL/6FdsRO9Kew
T7Fm04p/CbArY3iL53mjzfozM2Wo0n5vGBpn2l19yYfKV82H
=Qd8L
-----END PGP MESSAGE-----

まあこれが ”こんにちは!”とは ちょっと 想像はできません!

では復号をしてみます。

gpg --decrypt file

まず この様にしてみましょう

gpg --decrypt file_org.gpg

これで 復号することができる。

$ gpg --decrypt file_org.gpg

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“fdopstm (Here is fake) <fdopstm@catland.kigdm>”
2048ビットELG-E鍵, ID C8C2853F作成日付は2007-09-01 (主鍵ID CABF456E)

パスフレーズを入力: /* パスフレーズを 入力します  */
gpg: 2048-ビットELG-E鍵, ID C8C2853F, 日付2007-09-01に暗号化されました
      “fdopstm (Here is fake) <fdopstm@catland.kigdm>”
こんにちは!

もう一つを 復号してみましょう

$ gpg --decrypt file_org.asc

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“fdopstm (Here is fake) <fdopstm@catland.kigdm>”
2048ビットELG-E鍵, ID C8C2853F作成日付は2007-09-01 (主鍵ID CABF456E)

パスフレーズを入力:  /* パスフレーズを 入力します  */
gpg: 2048-ビットELG-E鍵, ID C8C2853F, 日付2007-09-01に暗号化されました
      “fdopstm (Here is fake) <fdopstm@catland.kigdm>”
こんにちは!

これで問題はないのですが ファイルに 納めるためには

$ gpg --decrypt file_org.gpg >decrypt_type_gpg_file_org
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“fdopstm (Here is fake) <fdopstm@catland.kigdm>”
2048ビットELG-E鍵, ID C8C2853F作成日付は2007-09-01 (主鍵ID CABF456E)

パスフレーズを入力:  /* パスフレーズを 入力します  */

gpg: 2048-ビットELG-E鍵, ID C8C2853F, 日付2007-09-01に暗号化されました
      “fdopstm (Here is fake) <fdopstm@catland.kigdm>”
$ ls -l decrypt_type_gpg_file_org 
-rw-r--r--    1 fdopstm   users  13  9月  2日  11:41 decrypt_type_gpg_file_org
$ file decrypt_type_gpg_file_org 
decrypt_type_gpg_file_org: ISO-8859 text
$ cat decrypt_type_gpg_file_org 
こんにちは!
$ cat -v decrypt_type_gpg_file_org 
M-$M-3M-$M-sM-$M-KM-$M-AM-$M-OM-!M-*

もう一つの方も

$ gpg --decrypt file_org.asc >decrypt_type_asc_file_org

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“fdopstm (Here is fake) <fdopstm@catland.kigdm>”
2048ビットELG-E鍵, ID C8C2853F作成日付は2007-09-01 (主鍵ID CABF456E)

パスフレーズを入力:  /* パスフレーズを 入力します  */
gpg: 2048-ビットELG-E鍵, ID C8C2853F, 日付2007-09-01に暗号化されました
      “fdopstm (Here is fake) <fdopstm@catland.kigdm>”
$ ls -l decrypt_type_asc_file_org
-rw-r--r--    1 fdopstm    users  13  9月  2日  11:46 decrypt_type_asc_file_org
$ cat decrypt_type_asc_file_org
こんにちは!
$ cat -v decrypt_type_asc_file_org
M-$M-3M-$M-sM-$M-KM-$M-AM-$M-OM-!M-*

確認しておきましょう

$ diff3 decrypt_type_asc_file_org decrypt_type_gpg_file_org file_org
$ diff -s  decrypt_type_asc_file_org decrypt_type_gpg_file_org
Files decrypt_type_asc_file_org and decrypt_type_gpg_file_org are identical
$ diff -s decrypt_type_gpg_file_org file_org
Files decrypt_type_gpg_file_org and file_org are identical

少なくとも個人の 文字列を 他の人に 見えなくする事は出来ますが パスフ レーズを忘れると わやですわ!

補足

この方法は 良く見ると 自分自身の 公開鍵を使用して 暗号化をして それを 自分自身の 秘密鍵にて 復号しているということです。本来というか 通常の使 用方法とは 異なっています。本来とか通常 というのは 正鵠でないならば

ここに 二人 Honnnin と Aite という人が いるとします。環境として この 二人とも gnupg を 持っているとします 状況は

Honnnin は 秘密鍵(Honnnin)と 公開鍵(Honnnin)を 持っています
Aite は 秘密鍵(Aite)と 公開鍵(Aite)を 持っています

有る文字列 の ファイル(Honnnin)を 暗号化する場合、 通常 は Honnnin に対して 暗号化する ということは (秘密の 日記 等には 使用するかも知れませんが)、Aite に 渡して 復号してもらう ということが ほとんどでしょう。

Honnnin  ファイル(Honnnin)
               |
               |--- 暗号化 公開鍵(Aite)で行う
               |

         暗号 ファイル(Honnnin )<==(公開鍵(Aite) で 暗号化)
               ----  (送る)
               |
               |
               |
               ----  (受け取る)
         暗号 ファイル(Honnnin )<==(公開鍵(Aite) で 暗号化)
               |
               |--- 復号化 秘密鍵(Aite)で行う
               |
Aite    ファイル(Honnnin) を 読む事が出来る

この場合 ”暗号 ファイル(Honnnin )<==(公開鍵(Aite) で 暗号化) ”は
もう ”Honnnin”は 読む事は出来ない事に 留意しなければ なりません

こんかいは 暗号化 を Honnnin の 公開鍵にて 暗号化したので これを 復号 するのは Honnnin の 秘密鍵でしか 復号出来ない事に なります。まあこれはこ れで 良いのですが

にゃんたろう 拝!

2007年 9月 2日 (日) 23:54:28 JST 作成


次へ

暗号 復号 簡単な例

Copyright © 2007. nyantarou All Rights Reserved.