- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在一个较大的项目中编写一个简单的文件加密/解密。由于许可证问题,我想避免使用 libgpgme。 openPGP 标准对于我的项目时间框架来说太复杂了。我想用 openssl 做我的加密工作。
现在我已经实现了以下内容:
加密(伪代码):
RAND_bytes(aes_key)
RAND_bytes(aes_salt)
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1(), (const unsigned char *)aes_salt, aes_key, sizeof(aes_key), 5, key, iv);
然后我aes256我的数据
EVP_EncryptInit_ex(&e_ctx, EVP_aes_256_cbc(), NULL, key, iv);
然后我用RSA加密 key 和iv
RSA_public_encrypt(flen, (unsigned char *)key, encryptedKey, rsa, RSA_PKCS1_PADDING );
RSA_public_encrypt(flen, (unsigned char *)iv, encryptedIV, rsa, RSA_PKCS1_PADDING );
然后我将 128 位 key 和 iv 保存在文件的“顶部”(256 字节 header )。
解密:-> 读取前 256 个字节(分成 key 和 iv)-> 用本地 RSA 私钥解密 key 和 iv(当然 RSA 私钥不在文件中)-> 使用 key 和iv解密数据
我对那个代码安全吗?
最佳答案
由于这是一种新格式,您应该使用 OAEP 填充。只需将 RSA_PKCS1_PADDING
更改为 RSA_PKCS1_OAEP_PADDING
。您实际上不需要加密 IV(据我所知,这不会造成伤害,而且可能会有所帮助)。
否则,只要RSA_size(rsa)==16
,这个方法应该没问题。当然,不能解密文件的任何人都不能知道私钥。
关于c - 我的加密是否像 openPGP/SMIME 一样安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7868754/
这是我第一次想最好检查我要安装的绑定(bind)软件的 key 。所以我下载了我认为是 OpenPGP key 的东西...... $ wget ftp://ftp.isc.org/isc/bind9
RFC 4880 将版本 4 签名数据包标签 2 描述为 - One-octet signature type. - One-octet public-key algorithm. - One-oct
我正在使用 Grails 插件:crypto:2.0,但在 PGP 中加密解密消息时遇到问题。 这是我的 Controller 代码: def index3 () { def pgpK = P
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 8年前关闭。 Improve this que
我正在尝试使用 BouncyCaSTLe 库创建签名和加密的消息,然后我在命令行上针对 gpg 进行测试以确认它是否有效。然而,虽然它提供了一个看起来不错的 PGP 消息,但 gpg 在解密它时遇到了
如何使用 Javascript 和 openpgp.js 从文本中读取私钥并生成公钥? 我试图让用户将他们的私有(private) PGP key 输入文本框,并使用该文本框中的数据(和密码)生成公共
我在一个目录中有数百个 gpg 加密文件,格式为 filename.xyz.gpg,其中“xyz”是任意扩展名。我需要解密所有文件以生成 filename.xyz,这样我就不必手动输入每个文件的密码了
我正在使用 PHP 中的 GnuPG 类。我在导入有效公钥时没有遇到任何问题,但如果我尝试随机导入一些明显不是公钥的“测试”之类的东西,我会收到错误 502 错误网关。我在 PHP 文档中看到 gnu
是否有创建 OpenPGP key 或使用 OpenPGP 加密文件的库? 最佳答案 可以看看GPGMe .查看manual关于 generating keys 的条目和 encrypting a p
我想使用我的 GPS (2) 子 key 之一在 Git 中签署提交/标签即,我新创建的具有长 ID B0##...的 RSA4096 仅签名 key sec# ed25519/9F########
我正在开发一个需要验证 OpenPGP 公钥的 go 项目,以便能够使用它来验证文件签名。 我生成了一个根 key 和另一个 key ,我用根 key 对其进行了签名(我们称第二个 key 为已签名)
我对文档有一些疑问。 这是我的程序: package main import ( "bytes" "code.google.com/p/go.crypto/openpgp" "
OpenPGP.js 是一个实现了 OpenPGP 标准的密码学库,最常用于电子邮件加密。 OpenPGP.js 是一个实现了 OpenPGP 标准 的密码学库,
我正在使用以下管道从 Aurora 流式传输数据,将其转换为 csv,然后将其发送到 S3。 可读的 knex 流: const getQueryStream = (organizationId) =
我只有一个 OpenPGP key 的公共(public)指纹。我不知道 key ID 或几乎任何其他信息。 如何获取对应的公钥?有没有在线服务可以做到这一点? 最佳答案 指纹与长短键 ID 的关系如
从 GitHub REST API v3 for GPG Keys 返回的 public_key 字段的格式是什么? ? 例如,命令curl -v -H "Accept: application/vn
我正在尝试从 ActiveMQ 的公共(public) OpenPGP key 中获取指纹。它们发布于http://www.apache.org/dist/activemq/KEYS . 不幸的是,并
据我了解,OpenPGP 是 'definition of a set of standard formats for encrypting/signing' . 我最近推荐某人使用默认的 Java
我尝试导入现有的 pgp 公钥: -----BEGIN PGP PUBLIC KEY BLOCK----- Version: Keybase OpenPGP v1.0.0 Comment: https
我在业余时间一直在研究 OpenPGPjs(Javascript port of OpenPGP)以学习新知识。为了测试它,我正在开发一个简单的网络应用程序来存储和检索 key 对和数据库中的加密数据
我是一名优秀的程序员,十分优秀!