• gpg加密使用


    GPG一般是两方用来加密发送信息的。

    使用对方的公钥进行加密,可以确保只有对方才能用他的私钥解密。
    使用自己的私钥对消息签名,可以确保对方用自己的公钥验证消息的确源自自己。

    生成gpg秘钥对

    gpg --generate-key
    

    之后会询问用户名、邮箱以及密码,最后会需要大量的随机数(这里我等了十分钟以上才好)

    导出公钥和私钥

    私钥导出

    一般私钥导出是为了在其他机器上解密文件

    # 获取私钥id
    gpg --list-secret-keys
    
    # 导出私钥到文件
    gpg --export-secret-keys $ID > my-private-key.asc
    
    # 在另一台机器上导入
    gpg --import my-private-key.asc
    
    # 如果另一台机器上已经存在,则可以先删除
    gpg --delete-keys 
    gpg --delete-secret-keys
    

    公钥导出

    # 查看有哪些公钥可导出
    gpg --list-keys
    
    # 导出指定公钥
    gpg --output blake.gpg --armor --export alice@cyb.org
    
    # 导入
    gpg --import blake.gpg
    
    # 确认key有效
    gpg --edit-key alice@cyb.org
    >fpr
    ># 注意这里trust要选择5,后面签名才能不用再确认
    >trust
    >check
    

    使用

    加密

    gpg --encrypt --armor --recipient recipient_email $file
    

    解密

    gpg --decrypt --output {outputfile} message-for-me.gpg
    

    缓存

    通常情况下,使用gpg 解密后,gpg agent会缓存输入的密码一段时间。
    如果需要强制不进行缓存,每次都提示输入密码

    创建~/.gnupg/gpg-agent.conf 文件,并增加以下内容:

    default-cache-ttl 1
    max-cache-ttl 1
    

    然后重启gpg agent:

    echo RELOADAGENT | gpg-connect-agent
    

    通过命令行提供密码

    如果想在脚本中进行解密,一般是不希望弹出密码框,而是直接通过命令提供。
    命令如下:

    gpg --pinentry-mode loopback --batch --yes --passphrase "${passphrase}" --output ${output_file_name} --decrypt ${file_to_decrypt}
    

    这里关键有两点:

    1. 必须增加--batch选项,否则--passphrase选项无效,这是在man手册里有说的
    2. 必须增加--pinentry-mode loopback选项,否则仍然提示密码框,这个手册中没说,搜索了很久才知道如何解决(这个回答
  • 相关阅读:
    Sublime Text 3
    JobTracker等相关功能模块初始化
    .NET编程规范
    理解多线程设计模式(转)
    理解java中的ThreadLocal 专题
    情商--人生职场
    老师只喜欢好学生(转)
    不是因为项目让你不能发光,而是因为你才让项目不能发光
    考试系统--前进/后退功能
    tomcat配置文件server.xml具体解释
  • 原文地址:https://www.cnblogs.com/mosakashaka/p/12608977.html
Copyright © 2020-2023  润新知