我试图在PHP脚本中的字符串中加入GPG clear-signed of text.我可以使GPG加密字符串中的文本,如下所示:
$encrypted = shell_exec("echo '$text' | gpg -e -a -r foo@bar.com --trust-model always");
Run Code Online (Sandbox Code Playgroud)
这是完美的,加密文本被发送到$ encrypted变量.这证明GNUPGHOME和GNUPG设置正确.
但是,当我尝试以相同的方式生成一个明确签名的消息:
$text = "googar";
$signature = exec("echo $passphrase | gpg -v --clearsign --no-tty --passphrase-fd 0 '$text' 2>&1 1> /dev/null", $output);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
... string(51) "gpg: can't open `googar': No such file or directory"
[3]=>
string(46) "gpg: googar: clearsign failed: file open error"
}
Run Code Online (Sandbox Code Playgroud)
返回此错误,包含或不包含$ text变量周围的单引号.
如何强制GPG或shell_exec将$ text视为管道而不是查找文件?
我需要以这种方式回应密码(我知道,它'非常不安全',因为GPG无法在密码中传递密码作为命令行上的变量.
我正在使用open的openpgp包来制作一个简单的程序来加密短消息和ASCII装甲.我目前的代码是:
package main
import (
"code.google.com/p/go.crypto/openpgp"
"code.google.com/p/go.crypto/openpgp/armor"
"fmt"
"log"
"os"
)
func main() {
to, err := openpgp.NewEntity("John Smith", "comment", "john@example.com", nil)
if err != nil {
log.Fatal(err)
}
from, err := openpgp.NewEntity("John Smith", "comment", "john@example.com", nil)
if err != nil {
log.Fatal(err)
}
recipients := []*openpgp.Entity{to}
armorer, err := armor.Encode(os.Stdout, "PGP MESSAGE", nil)
if err != nil {
log.Fatal(err)
}
defer armorer.Close()
encrypter, err := openpgp.Encrypt(armorer, recipients, from, nil, nil)
if err != nil {
log.Fatal(err)
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 PECL 在 mac 上安装 gnupg。
须藤 pecl 安装 gnupg
下载 gnupg-1.3.3.tgz ... 开始下载 gnupg-1.3.3.tgz(19,141 字节) ......完成:19,141 字节 5个源文件,构建 警告:php_bin /Applications/MAMP/bin/php/php5.5.3/bin/php 似乎有后缀 /php5.5.3/bin/php,但配置变量 php_suffix 不匹配 运行: phpize 配置: PHP API 版本:20121113 Zend 模块 API 编号:20121212 Zend扩展API编号:220121212 构建在 /private/tmp/pear/install/pear-build-rootj1cVj1/gnupg-1.3.3 运行:/private/tmp/pear/install/gnupg/configure 检查处理长行的 grep 和 -e... /usr/bin/grep 检查 egrep... /usr/bin/grep -E 检查不截断输出的 sed... /opt/local/bin/gsed 检查抄送...抄送 检查 C 编译器是否工作...是的 检查 C 编译器默认输出文件名... a.out 检查可执行文件的后缀... 检查我们是否正在交叉编译...没有 检查目标文件的后缀... o 检查我们是否正在使用 GNU C 编译器...是 检查 cc 是否接受 -g... 是 检查 cc 选项以接受 ISO C89... 不需要 检查如何运行 C …
看来,虽然PGPPublicKey该类提供了一种isEncryptionKey()方法来确定公钥的算法是否可以用于加密目的(RSA_GENERAL, RSA_ENCRYPT, ELGAMAL_GENERAL, ELGAMAL_ENCRYPT),但仅凭这一点还不足以选择有效的加密子密钥。
有关于存储在数据包中的公钥的预期用途的信息,如 GnuPG packet.h 中所示:
41 /* Usage flags */
42 #define PUBKEY_USAGE_SIG GCRY_PK_USAGE_SIGN /* Good for signatures. */
43 #define PUBKEY_USAGE_ENC GCRY_PK_USAGE_ENCR /* Good for encryption. */
44 #define PUBKEY_USAGE_CERT GCRY_PK_USAGE_CERT /* Also good to certify keys.*/
45 #define PUBKEY_USAGE_AUTH GCRY_PK_USAGE_AUTH /* Good for authentication. */
46 #define PUBKEY_USAGE_UNKNOWN GCRY_PK_USAGE_UNKN /* Unknown usage flag. */
47 #define PUBKEY_USAGE_NONE 256 /* No usage given. */
Run Code Online (Sandbox Code Playgroud)
我的问题是,鉴于 Bouncy Castle …
在尝试生成 GPG 密钥时(使用 gpg --gen-key),它可能会在发出消息后挂起:
没有足够的随机字节可用。请做一些其他的工作,让操作系统有机会收集更多的熵!(还需要 278 个字节)
gpg (GnuPG) 1.4.16
Ubuntu 14.04.2 LTS
file.txt登录GnuPG的基本选项是file.txt.asc签名.
在我们的工作流程中,我需要几个签名file.txt- 主要的例子是作者签名和验证者签名.
GnuPG的最佳用例是什么?我可以将这两个签名存储在一个asc文件中吗?或者我需要处理两个文件file.txt.authorname.asc和file.txt.checkername.asc?或者是其他东西?
我使用 gpg 只是为了加密和解密。
我使用的命令是:
for enc:
gpg --sign test
for dec:
gpg --decrypt test.gpg > test
Run Code Online (Sandbox Code Playgroud)
但我收到以下警告消息:
gpg: Signature made Fri Jun 24 17:29:00 2016 UTC using RSA key ID XXXX
gpg: Good signature from "XXXX@xxxx.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Run Code Online (Sandbox Code Playgroud)
当然,我已经尝试过
--status-fd, --no-comment, --no-mdc-warning,--no-tty ,--no-verbose --quiet --batch, --no-greeting etc基于互联网搜索。
有没有办法摆脱这些警告信息?
作为最后一个选项,我使用 如何在 bash 中隐藏命令输出
但我认为应该有一个简单的方法来抑制 gpg 中的警告。
以下是由gpg --armor --export heinrichh@duesseldorf.de(从gpg man; 取得的电子邮件)生成的导出的公共gpg密钥
我如何从该密钥获取到期日期?是否有可用的开放项目,或者我可以使用的功能?
我知道我可以执行gpg --list-keys搜索,heinrichh@duesseldorf.de但是我的问题是我得到了以下格式的密钥,因此需要将这些信息提取到该数据中。
我已经使用基于gpg rfc规范的反向工程从中读取了用户名,但是这次我宁愿寻找比“自制”方法更好的方法。
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (SunOS)
mQGiBFqNy1sRBADnegXzBpsnDgSudhj5S4+Lv0rwHHcJDg0nxHPf2KaefXnytzhm
tf/43xQaaPUpIg2UMV2qhdA9qczMlqe6llz7sQbi4v0QTuOPSx2EcKb364TcsG5K
RO180ghq0RmeK+EDfCn8i5aPfGucaPXpUJ9ZaRaJmEWlv57eymPEW+FAVwCgmATR
w4bcPZWyUMaO/MsB4+IA1zkEALB60PN8sA1mFyf0z9mlXYoP/T68pAHFMWd+NNcB
K7+BmHZEhTUEUwB1pfO/s6AurSCAFHUmhM2S9VBkci+EuyFVCkorZbbjCdZ3Nim5
KojcIL319mbYNyfzVkxLLbrHaSvax7xmyLY7HfXEYyJskR6fk4zB7er4VKDIh1gZ
G9T/A/9j1FslL0sBZ2YfcDVWpfofoX2hxW9Y0ihxHGpVtwcOd90RFXEt1jjDP2O2
iPkseTpxT2bG9qGK89YymKZjNnXKxZoYG0Y1peiHL4dX4EeEkGS72MWLwCUupuxh
w4MzH7mgtAV4UxXm2WjomWX8aZqJ5YQ4Cnxs0f6zcDnTSj8DvLQwSGVpbnJpY2gg
SGVpbmUgKHRlc3QpIDxoZWlucmljaGhAZHVlc3NlbGRvcmYuZGU+iGUEExECACUF
AlqNy1sCGwMFCQABUYAGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJECAy3dUnZnUw
6BUAn1ikxbVvcJ6vaARftyK/Uw6Zw9WKAJwPgbcy02HMvtjQCaCtusLl12ZdLLkC
DQRajctbEAgA1YU+9LWaSdInlCMaF639qaE8bv3JK2DbNj/0v+QwmQT81Jp6U37j
XbU+zA85nw96zwjBDz9ACg3jtQlrbg7e+ooJQMzCVYkkIJH8mkQi8JYswLFFaKRp
dJy43Gyx+ehbOT5FGfeX8VoAbuDhBJKtssmH/EEz9hYLLLZ8me88onnNOWCAAWF+
bOJSemRMppY5f9nQwUMk7uG5yv9Wk/E98w+evow10bhWs3cyCxvT6IHQSGS0m+iC
vCDhaSRy+cRf+GRqy/LyUb4z7Q4TZRrcE/X3xY7FW8/iNSlkv5oMjpFoaYBpSzkE
vdXsdOJQVZHnefkUDXTMl7OPWX9RyX1CbwADBQgAh+Bsn7lin/z8WIDIwlo7B7ag
p8YzFeJqsyPxP2I9a36mVrHOopXHotMMCPBF9lm227vXwB+z8fKoujzd9himVspo
fMA5GGvPHEya4ldha+3ChJTNgErZfkczzbcoP6YLmxI+kfW/OwjTq0Ivi0afhChR
vhb/N+hXoVcGm9ciA9xnoGE0+hZpzf5iF/SiL/T4wkCQy68PoCHxzrxWAnaqqldV
nYBEG5mUzrvqYb2iKWf24qt34og5GV4mrlNPSuvj7faE1BQe5JgEIhr8TS9Secnc
qQGJPh/+afK4Y8kl4CvQq3/BQddoFKgZdmUgaIBZN/fDqWwGfWLVx0mWXQgEbIhP
BBgRAgAPBQJajctbAhsMBQkAAVGAAAoJECAy3dUnZnUwNIwAn3+A5rGyGNZBD5qT
FgSoVvy7JcRLAKCX9sgU2by9pKxTmyZXvaUrEwGwXw==
=Ojdl
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的ios应用安装fastlane,但是当我尝试安装RVM时,我遇到了问题。
我的命令是gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113 ************* 7D2BAF1CF37B13E2069D69561 *************