我有一个postgresql apt存储库gpg密钥的副本,并希望查看文件中的gpg密钥的详细信息.如果不将它导入钥匙圈,这可能吗?
我正在尝试将我的临时存储库推oss.sonatype.org
送到中央存储库,但此操作正在失败,我正在跟踪异常
Event: Failed: Signature Validation
typeId signature-staging
failureMessage No public key: Key with id: (XXXXX) was not able to be located on http://keyserver.ubuntu.com:11371. Upload your public key and try the operation again.
Run Code Online (Sandbox Code Playgroud)
我曾经gbp
为我生成公共密钥和私有密钥,我甚至使用以下命令将公钥发送到服务器
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys EE539F98
Run Code Online (Sandbox Code Playgroud)
我仍然得到相同的例外.我交叉检查,只有一个Sub Key
,不知道我还需要做什么来推公钥,所以这可以通过nexus找到
我知道如何使用gpg验证这样:
$ gpg --verify somefile.sig
gpg: Signature made Tue 23 Jul 2013 13:20:02 BST using RSA key ID E1B768A0
gpg: Good signature from "Richard W.M. Jones <rjones@redhat.com>"
gpg: aka "Richard W.M. Jones <rich@annexia.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: F777 4FB1 AD07 4A7E 8C87 67EA 9173 8F73 E1B7 68A0
Run Code Online (Sandbox Code Playgroud)
但我真正想要做的是根据特定的公钥文件验证文件.
动机是从网站下载大文件并需要验证它们在使用之前没有被篡改的程序的一部分.该网站将包含文件和签名.该程序将附带GPG公钥.当我将文件上传到网站时,我将使用相应的私钥对其进行签名(显然不会分发).似乎该程序应该能够执行以下操作:
gpg --no-default-keyring --verify file.sig \
--is-signed-with /usr/share/program/goodkey.asc
Run Code Online (Sandbox Code Playgroud)
但是gpg …
我想使用PGP加密来加密CSV文件,我通过PHP脚本生成,然后通过电子邮件将该文件发送到客户端.客户端会给我加密密钥,我需要将其用于加密文件.
我用Google搜索了PGP并发现它是非常好的隐私,我也找到了OpenPGP http://www.openpgp.org/和GnuPG http://www.gnupg.org/这两种类型的PGP是什么?我应该使用哪一个?
如何使用PHP中的PGP使用我的客户端将提供的密钥加密文件?
我第一次听到这个术语,任何人都可以帮助理解这一点并在PHP中实现它.
This is the first time I figured I had better check the keys of the bind software I want to install. So I downloaded what I think is a OpenPGP key ...
$ wget ftp://ftp.isc.org/isc/bind9/9.9.4/bind-9.9.4.tar.gz.sha1.asc
Run Code Online (Sandbox Code Playgroud)
... then I tried to "import" this key like this ...
$ gpg --import bind-9.9.4.tar.gz.sha1.asc
Run Code Online (Sandbox Code Playgroud)
... but I get this error message:
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
Run Code Online (Sandbox Code Playgroud)
What am I doing wrong?
Thanks!
首先让我说我对这一切都是新手.我想要做的是使用Java中的gpg来解密加密文件.
我成功完成了什么:
有同事使用我的公钥和他的私钥加密文件并成功解密它.
走了另一条路
让另一位同事尝试解密一个不适合他的文件:失败(如预期的那样)
我的密钥是这样生成的......
(gpg --version告诉我我正在使用1.4.5而我正在使用Bouncy Castle 1.47)
gpg --gen-ley
选择选项"DSA和Elgamal(默认)"
填写其他字段并生成密钥.
该文件使用我的公钥和另一个密钥加密.我想解密它.我编写了以下Java代码来完成此任务.我正在使用几种弃用的方法,但我无法弄清楚如何正确实现使用非弃用版本所需的工厂方法,所以如果有人对我应该使用的那些实现有一个想法,那将是一个不错的奖金.
Security.addProvider(new BouncyCastleProvider());
PGPSecretKeyRingCollection secretKeyRing = new PGPSecretKeyRingCollection(new FileInputStream(new File("test-files/secring.gpg")));
PGPSecretKeyRing pgpSecretKeyRing = (PGPSecretKeyRing) secretKeyRing.getKeyRings().next();
PGPSecretKey secretKey = pgpSecretKeyRing.getSecretKey();
PGPPrivateKey privateKey = secretKey.extractPrivateKey("mypassword".toCharArray(), "BC");
System.out.println(privateKey.getKey().getAlgorithm());
System.out.println(privateKey.getKey().getFormat());
PGPObjectFactory pgpF = new PGPObjectFactory(
new FileInputStream(new File("test-files/test-file.txt.gpg")));
Object pgpObj = pgpF.nextObject();
PGPEncryptedDataList encryptedDataList = (PGPEncryptedDataList) pgpObj;
Iterator objectsIterator = encryptedDataList.getEncryptedDataObjects();
PGPPublicKeyEncryptedData publicKeyEncryptedData = (PGPPublicKeyEncryptedData) objectsIterator.next();
InputStream inputStream = publicKeyEncryptedData.getDataStream(privateKey, "BC");
Run Code Online (Sandbox Code Playgroud)
因此,当我运行此代码时,我了解到我的密钥的算法和格式如下:
算法:DSA格式:PKCS#8
然后它在最后一行打破:
Exception in thread "main" org.bouncycastle.openpgp.PGPException: error …
Run Code Online (Sandbox Code Playgroud) 我正在运行Linux Mint 14并尝试下载android源代码.我按照设置环境的说明进行操作,当我尝试使用repo获取源代码时,出现以下错误.
...
* [new tag] v1.9.4 -> v1.9.4
* [new tag] v1.9.5 -> v1.9.5
* [new tag] v1.9.6 -> v1.9.6
object e76efdd7b342577c40aa271fa5ded9d66a783a9b
type commit
tag v1.12.4
tagger Conley Owens <cco3@android.com> 1380645867 -0700
repo 1.12.4
gpg: Signature made Tue 01 Oct 2013 09:44:27 AM PDT using RSA key ID 692B382C
gpg: Can't check signature: public key not found
error: could not verify the tag 'v1.12.4'
Run Code Online (Sandbox Code Playgroud)
我已经尝试从指令导入公钥,尝试生成我自己的GPG密钥,以及符号链接目录〜/ .gnupg和〜/ .repoconfig/gnupg两种方式,我仍然得到相同的错误.我也试图删除〜/ .repoconfig和〜/ .gnupg但仍然没有运气.
任何帮助,将不胜感激.
libsodium是一个很棒的加密库,GnuPG是一个很棒的密钥管理和签名软件.
GnuPG的最近发布了Ed25519签名密钥的支持,并提交了一份草案,IETF.
我想通过我的Web应用程序使用GnuPG离线使用Sodium生成的密钥.这样就可以了,所以每次签名时我都不必用我的私钥来信任服务器,而且我不需要在我的客户端上使用特殊的软件(即使我必须写它)因为我已经拥有了信任GnuPG.
我怎么能这样做?如何将libsodium私钥转换为OpenPGP兼容的私钥包?
我正在尝试在Java应用程序中实现基于Yubikey NEO OpenPGP智能卡小程序的PGP加密.这似乎是一个黑暗的艺术,并不容易谷歌这个东西,但这里是我到目前为止的地方:
卡被初始化,密钥使用gpg工具生成.它通常有效.我有.asc
格式的公钥,并设法加载它org.bouncycastle.openpgp
使用javax.smartcardio
API 连接USB加密狗中的智能卡.
选择OpenPGP小程序
val pgpAID = bytes(0xD2, 0x76, 0x00, 0x01, 0x24, 0x01)
val answer = cardChannel.transmit(CommandAPDU(0x00, 0xA4, 0x04, 0x00, pgpAID))
Run Code Online (Sandbox Code Playgroud)成功向卡片出示正确的PIN码
val pin = "123456"
return bytes(0x00, 0x20, 0x00, 0x82, pin.length) + pin.toByteArray(Charsets.UTF_8)
Run Code Online (Sandbox Code Playgroud)发送准成功(见下文)decipher
命令
bytes(0x00, 0x2a, 0x80, 0x86, data.size) + data + bytes(0x00)
Run Code Online (Sandbox Code Playgroud)
何时data = "xxxx".toByteArray()
,结果是SW=9000
(=成功)但没有返回数据.这是一个天真的测试,因为第52页的OpenPGP applet文档提到了这一点
在加密之前,命令输入(填充指示符字节除外)应根据PKCS#1格式化.
我不知道如何加密数据并将其转换为PKCS#1格式.
我也试过阅读Yubico OpenPGP卡实现测试,但它只提供了另一个"失败"的例子(第196行).我尝试运行它,但结果是不同的:测试期望SW=0050
(表示异常?)和我得到的是SW=6f00
(没有精确的诊断,根据这个文件).
我用完整的代码创建了一个GitHub存储库.它是用Kotlin编写的,但应该很容易阅读.
openpgp ×10
gnupg ×6
java ×2
php ×2
android ×1
bouncycastle ×1
cryptography ×1
elgamal ×1
encryption ×1
maven ×1
pgp ×1
repository ×1
smartcard ×1
sonatype ×1
yubico ×1