我正在使用GNUPG来加密我的ascii文件.
我学会了生成密钥,以及如何使用它来加密和解密文件.
我使用了两种方法:
gpg -d foo.txt.gpg
Run Code Online (Sandbox Code Playgroud)
和
gpg --output foo.txt --decrypt
foo.txt.gpg
Run Code Online (Sandbox Code Playgroud)
我意识到第一种方法会在屏幕上显示解密文件,例如当我通过SSH执行命令时.
关于第二种方法,我担心它是否会在本地pc上留下痕迹--foo.txt文件.
最重要的是,我不知道如何动态编辑foo文件的内容.理想情况下,我想通过SSH打开文件使用nano/pico,键入我的密码来解密,然后编辑文件,保存并加密.我非常希望避免将任何文件保存到本地磁盘.
欢迎任何评论.
先感谢您.
为什么GnuPG中的RSA密钥限制为4096位?
修改源代码以增加最大大小是不合法的吗?
ssh-keygen没有这个限制(例如,我可以创建一个长32768位的密钥).这是为什么?
我的GPG密钥环中有多个密钥.
我想做一个gpg -e -s -a加密,签名和ascii装甲输出.但是,我还需要指定其使用的密钥进行签名,通过密钥ID.
我安装了Git for Windows,包括Windows 10和Gpg4win上的Git Bash.默认情况下,我必须将我通过Kleopatra创建的所有密钥重新导入到Git Bash中内置的GPG版本中,并且它不允许我设置代理.我需要做的是自动唱歌,这样我不需要每次都输入密码,而只是在给定的时间段内第一次输入密码.怎么可能?
我尝试按照本教程,但gpg2在Git Bash中执行时不使用正确的字符集,因此它无法识别包含非ASCII字符的键.
有什么方法可以解决这个问题吗?在Windows上使用GGP与Git签名的最佳方法是什么?
我正在试图弄清楚如何手动签署/验证提交,但我无法弄清楚正在签署哪些数据来创建签名.换句话说,我想不出什么<data>在gpg --verify <commit-sig> <data>需求如此.
这是git源代码的相关部分:https://github.com/git/git/blob/master/commit.c#L1047-L1231但我也是C.的新手.
这是一些示例数据:
在一个新的git仓库中,我创建了一个文件ledger.txt并使用签名提交提交它:
git config --global user.signingkey 7E482429
git init
echo "EAC5-531F-38E8-9670-81AE-4E77-C7AA-5FC3-7E48-2429 1\n" > ledger.txt
git add ledger.txt
git commit -m "Initial commit" --gpg-sign=7E482429
Run Code Online (Sandbox Code Playgroud)
在这里它是在日志中:
git log --show-signature
commit 876793da21833b5b8197b08462523fd6aad3e5ba
gpg: Signature made Fri May 9 20:01:55 2014 CDT using RSA key ID 7E482429
gpg: Good signature from "Dan Neumann <danrodneu@gmail.com>"
Author: Dan Neumann <danrodneu@gmail.com>
Date: Fri May 9 20:01:55 2014 -0500
Initial commit
Run Code Online (Sandbox Code Playgroud)
这是漂亮的打印提交对象(它存在于.git/objects/87/6793da21833b5b8197b08462523fd6aad3e5ba …
当我这样做时git commit -a -S -m "Commit Message",我收到此错误:
You need a passphrase to unlock the secret key for
user: "Username (Gpg Key) <email-id>"
2048-bit RSA key, ID 2487BE7C, created 2016-10-03
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
但是,当我提交时,它甚至不会询问/提示我的密码.那么,在使用gpg的-S标志时,我如何以及在何处输入我的密码呢?
我无法开始使用Gpg4win.
成功提交.
SashaChernykh@DESKTOP-EEOT0TN D:\SashaGitHub
$ git commit -m "[Test] gpg4win"
gpg: skipped "DBA8E7A2": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
我安装了Gpg4win →我在这里设置了Gpg4win ,这个答案是:
SashaChernykh@DESKTOP-EEOT0TN D:\SashaGitHub
$ gpg --list-key
gpg: keyring `C:/Users/SashaChernykh/AppData/Roaming/gnupg/pubring.gpg' created
gpg: C:/Users/SashaChernykh/AppData/Roaming/gnupg/trustdb.gpg: trustdb created
SashaChernykh@DESKTOP-EEOT0TN D:\SashaGitHub
$ gpg --gen-key
gpg (GnuPG) 2.0.30; Copyright (C) 2015 Free Software Foundation, Inc.
This is …Run Code Online (Sandbox Code Playgroud) 当我通过 激活虚拟环境时poetry shell,GPG 签名会变得混乱,因为$GPG_TTY是为父 shell 设置的。所以每次我用的时候poetry shell我都要做GPG_TTY=$(tty)。有没有办法自动执行此操作?理想情况下,我会在全球范围内设置一次,而不是为每个诗歌项目设置一次。
最近尝试更新emacs软件包并得到了这个。
Failed to verify signature archive-contents.sig:
No public key for 066DAFCB81E42C40 created at 2019-10-02T10:10:02+0100 using RSA
Command output:
gpg: Signature made Wed 02 Oct 2019 10:10:02 AM BST
gpg: using RSA key C433554766D3DDC64221BFAA066DAFCB81E42C40
gpg: Can't check signature: No public key
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
gnupg ×10
git ×4
bash ×1
c ×1
cryptography ×1
emacs ×1
encryption ×1
linux ×1
openpgp ×1
pgp ×1
php ×1
tty ×1
virtualenv ×1