zoukankan      html  css  js  c++  java
  • GPG-非对称加密

    我们需要两个账户进行操作,user1、use2;#这个实验需要我们在图形机上去做;

    1.创建加密文件

    [user1@logan ~]$ echo hello user2 > a.txt
    [user1@logan ~]$ ls
    a.txt  公共  模板  视频  图片  文档  下载  音乐  桌面

    2.我们要去user2中生成密钥对

    [user2@logan ~]$ gpg --gen-key
    gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    请选择您要使用的密钥种类:  default
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (仅用于签名)
       (4) RSA (仅用于签名)
    您的选择? 
    RSA 密钥长度应在 1024 位与 4096 位之间。
    您想要用多大的密钥尺寸?(2048)1024
    您所要求的密钥尺寸是 1024 位
    请设定这把密钥的有效期限。
             0 = 密钥永不过期
          <n>  = 密钥在 n 天后过期
          <n>w = 密钥在 n 周后过期
          <n>m = 密钥在 n 月后过期
          <n>y = 密钥在 n 年后过期
    密钥的有效期限是?(0) 0
    密钥永远不会过期
    以上正确吗?(y/n)y
    
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
    
    真实姓名:user2
    电子邮件地址:user2@123.com
    注释:test user2
    您选定了这个用户标识:
        “user2 (test user2) <user2@123.com>”
    
    更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?   O

    我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
    鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
    我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
    鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
    gpg: /home/user2/.gnupg/trustdb.gpg:建立了信任度数据库
    gpg: 密钥 37EC7F7B 被标记为绝对信任
    公钥和私钥已经生成并经签名。
    
    gpg: 正在检查信任度数据库
    gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
    gpg: 深度:0 有效性:  1 已签名:  0 信任度:0-,0q,0n,0m,0f,1u
    pub   1024R/37EC7F7B 2019-07-26
    密钥指纹 = 77B9 AE56 4E9D 2DB4 E2BE  6834 F9A5 E748 37EC 7F7B
    uid                  user2 (test user2) <user2@123.com>
    sub   1024R/5B9E893A 2019-07-26

    3.查看一下我们的密钥对

    这是公钥
    [user2@logan ~]$ gpg --list-key /home/user2/.gnupg/pubring.gpg ------------------------------ pub 1024R/37EC7F7B 2019-07-26 uid user2 (test user2) <user2@123.com> sub 1024R/5B9E893A 2019-07-26
    这是私钥
    [user2@logan ~]$ gpg --list-secret-key /home/user2/.gnupg/secring.gpg ------------------------------ sec 1024R/37EC7F7B 2019-07-26 uid user2 (test user2) <user2@123.com> ssb 1024R/5B9E893A 2019-07-26

    4.我们需要把公钥从钥匙环中摘出来

    [user2@logan ~]$ gpg --export --armor > /tmp/user2.key
    [user2@logan ~]$ cat /tmp/user2.key 
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.22 (GNU/Linux)
    
    mI0EXTq0tQEEANIThJw/IH4HgrVsYj+rY1qQL0m/2eFr0cchZPASqhexCSpSEviw
    ciMH1DePWUN+p8EYcYrwXd8gn+lMd3ExOR5T1sVPCK5nbUJ1RPA9P9autWz7FgtV
    fkpWmvtJ7XlO6bvzGziPMMabEB4X2+KzpLsjud8kNXUlHF0kYrT/qqk9ABEBAAG0
    InVzZXIyICh0ZXN0IHVzZXIyKSA8dXNlcjJAMTIzLmNvbT6IuQQTAQIAIwUCXTq0
    tQIbAwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEPml50g37H97/GwD/jOo
    MPm/ot6y3BWmrFnZA4X5jVry5/XBTSUBFHzSom0rqOWPJs1tmNjCfbCY54bnX3an
    bX6PloWuAzp+w0FDN1/BlbUnFkW7pqABJJev731DXzVairzyWw/BsgN7/hsS6PIT
    llAOeSINCBPqM1Nqh1wgBbnCnlVOuVNiCK5wj3ARuI0EXTq0tQEEAJZVzRbWU8DR
    2j7HDQVKSuyjcN1pUd3gyR/tlg107dpD1HcoB3KTUvrX4QvSMHx3YyDnNDSSJGrc
    Z8dpoJfxH5jTynY533Tu6+ri1sskQqQo7iEBDYloAqspTx1LsdKnhQirJbjfSuCD
    AI81TuLA1fusDZwex8wgyFqVkrmF6a4nABEBAAGInwQYAQIACQUCXTq0tQIbDAAK
    CRD5pedIN+x/e8O1BACcwpTEoE6Yt7EVTZuTEQJJdQX2DsQqYj7aO7ptGVAyZBlu
    lJ5v3okuodQGG5a/Kvd8J/sbEIWyt1u8QzxAwvLf9J6OkYBCQ2NeV/9/5fPPuZM7
    PtMTQJF6i/2QLb/pxTgoEpO3wgL0GjXqv6hBsguIyJ3uevKkaq9Y1wOINnvP1Q==
    =2Gbd
    -----END PGP PUBLIC KEY BLOCK-----

    5.user1 需要用user2的公钥加密自己的文件

    [user1@logan ~]$ cp /tmp/user2.key .
    [user1@logan ~]$ ls
    a.txt  user2.key  公共  模板  视频  图片  文档  下载  音乐  桌面

    6.将公钥挂到自己的钥匙环中

    [user1@logan ~]$ gpg --import user2.key 
    gpg: 已创建目录‘/home/user1/.gnupg’
    gpg: 新的配置文件‘/home/user1/.gnupg/gpg.conf’已建立
    gpg: 警告:在‘/home/user1/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
    gpg: 钥匙环‘/home/user1/.gnupg/secring.gpg’已建立
    gpg: 钥匙环‘/home/user1/.gnupg/pubring.gpg’已建立
    gpg: /home/user1/.gnupg/trustdb.gpg:建立了信任度数据库
    gpg: 密钥 37EC7F7B:公钥“user2 (test user2) <user2@123.com>”已导入
    gpg: 合计被处理的数量:1
    gpg:           已导入:1  (RSA: 1)

    7.对需要加密的文件进行加密

    [user1@logan ~]$ gpg --encrypt --armor -r user2 a.txt
    gpg: 5B9E893A:没有证据表明这把密钥真的属于它所声称的持有者
    
    pub  1024R/5B9E893A 2019-07-26 user2 (test user2) <user2@123.com>
     主钥指纹: 77B9 AE56 4E9D 2DB4 E2BE  6834 F9A5 E748 37EC 7F7B
     子钥指纹: 6F18 58F2 B6BC 037A A14D  69E6 3E94 8284 5B9E 893A
    
    这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
    己在做什么,您可以在下一个问题回答 yes。
    
    无论如何还是使用这把密钥吗?(y/N)y
    [user1@logan ~]$ ls
    a.txt  a.txt.asc  user2.key  公共  模板  视频  图片  文档  下载  音乐  桌面    生成了加密文件a.txt.asc

    8.将加密后的文件交给user2

    [user1@logan ~]$ mv a.txt.asc /tmp/
    [user1@logan ~]$ ls /tmp/
    a.txt.asc  user2.key

    9.user2解密,这里我们需要输入私钥密码;

    [user2@logan ~]$ ls
    a.txt.asc
    [user2@logan ~]$ gpg a.txt.asc 
    
    您需要输入密码,才能解开这个用户的私钥:“user2 (test user2) <user2@123.com>1024 位的 RSA 密钥,钥匙号 5B9E893A,建立于 2019-07-26 (主钥匙号 37EC7F7B)
    
    gpg: 由 1024 位的 RSA 密钥加密,钥匙号为 5B9E893A、生成于 2019-07-26
          “user2 (test user2) <user2@123.com>”
    [user2@logan ~]$ ls
    a.txt  a.txt.asc     我们的文件解密完成

    9.验证

    [user2@logan ~]$ cat a.txt
    hello user2

    实验完成;

  • 相关阅读:
    javascript
    javascript
    javascript
    easyui datagrid checkbox multiple columns have been done do
    combogrid获取多个字段的方法
    jquery显示、隐藏div的方法
    纠正jQuery获取radio选中值的写法
    comgrid获取多选值
    xheditor
    java向图片上写字,两个图片合并的方法
  • 原文地址:https://www.cnblogs.com/loganSxb/p/11251178.html
Copyright © 2011-2022 走看看