我想在我的软件中使用AES_256_GCM。 OpenSSL wiki页面给了我一个例子:wiki page。
它显示只有函数EVP_EncryptInit_ex(ctx,NULL,NULL,key,iv)使用键。
我的密钥是密码的SHA3_256散列(SHA3_256的Qt实现)。
我想知道是否必须使用PKCS#5来随机化密钥或者该函数处理该问题。我是否需要在OpenSSL中随机化密钥
回答
我的密钥是SHA3_256密码哈希(Q3实现SHA3_256)。
您应该使用OpenSSL的PKCS5_PBKDF2_HMAC_SHA1
将密码消化为密钥。请参阅How to use PKCS5_PBKDF2_HMAC_SHA1()。
这表明,只有功能
EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv)
使用键....我想知道如果我要使用PKCS#5 随机键或功能需要的照顾。
每个字符串或文件的加密都应该有它自己的随机IV。 IVs 不能重复。您的其他选择是为每个字符串或文件使用随机密钥。
加密操作的输出是{IV,CipherText}
对。
AES_256_GCM
是一个不错的选择。 Integrated Encryption Scheme可以改善的几种方法之一。您可以在GitHub上看看openssl-pkey-ec-ies。 Crypto++和BouncyCastle也有椭圆曲线集成加密方案的实现,所以你有其他选择。
一定要测试互操作性。他们互通,但需要旋转一些旋钮。 interop的问题是提供它的标准太多了,而且每个标准都有些不可互操作。为了给你一个细微差别的想法,ECIES调用了一个特定的变量被哈希(它是给定数据串的长度)。一个标准代表4个八位组中的变量,另一个标准代表8个八位组中的变量。如果您不知道,这是唯一的区别,并会导致互操作问题。
如果你去进行密码散列,那么你可以使用随机盐生成一个随机密钥(和IV,如果这是你想要的)。 –
取而代之,我建议使用PBKDF2-HMAC-SHA-256或PBKDF2-HMAC-SHA-512,具体取决于需要多少个密钥位; OpenSSL同时支持。 –
- 1. Ruby OpenSSL AES生成随机密钥
- 2. OpenSSL编成密码随机密钥和IV-存放在DB
- 3. 是AES密钥随机?
- 4. Google地球API是否需要密钥?
- 5. 需要使用密钥的可重复的随机数组随机洗牌
- 6. OpenSSL密钥在aes加密?
- 7. 更换计算机时,我们是否需要更改Google Maps API密钥?
- 8. 我是否需要Mac设备才能拥有“签名密钥”?
- 9. 是否需要加密认证的密钥?
- 10. Deserialise JSON与随机密钥
- 11. Simplejson和随机密钥值
- 12. 随机密钥生成
- 13. NodeJS TypeError('JwtStrategy需要密钥或密钥');
- 14. openSSL:如何初始化公钥加密密钥?
- 15. 加密:当我甚至根本不存储密钥时,是否需要加密密钥?
- 16. 如果我在协议中使用随机数,IV是否仍然需要是随机的?
- 17. OpenSSL的EVP随机失败解密
- 18. 我是否需要本地主机的captcha公钥和/或私钥?
- 19. 波雷费密码随机密钥(C#)
- 20. 在OpenSSL API代码中查找主密钥的MAC密钥,加密密钥和初始化向量
- 21. Java密钥库是否可以导入由OpenSSL生成的密钥对?
- 22. JSTL:我需要使用密钥
- 23. 我们是否需要ESLint中的“检查重复密钥”规则?
- 24. 我是否需要Android应用程序导出中的密钥库选择
- 25. 将随机值作为会话“密钥”存储在表中是否安全?
- 26. 在openSSL中手动设置AES密钥?
- 27. 在java中使用openssl创建密钥
- 28. 我是否需要初始化位?
- 29. 需要MySQL密钥索引?
- 30. OpenSSL的生成密钥对OSX OpenSSL的
这个问题似乎是脱离主题,因为它不是关于编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[密码学堆栈交换](http://crypto.stackexchange.com/)或[信息安全堆栈交换](http://security.stackexchange.com/)将是一个更好的地方要问。 – jww
这是关于编程,因为我想知道是否函数EVP_EncryptInit_ex(ctx,NULL,NULL,key,iv)随机化密钥本身或我必须做的。我不想通过2轮PBKDF传递我的密码。这不会是必要的。 – MKAROL