等效于Java中的OpenSSL命令
我对此不太熟悉Java或openssl中的文件加密。我知道学校的基础知识,但从未真正实施过。
现在,我得到了以下三个命令:
//generate random base64 private keyopenssl rand -base64 32 -out (keypath)
//Encrypt random key with public key
openssl rsautl -encrypt -inkey (encryptionkey) -pubin -in (input) -out (output)
//encrypt file
openssl enc -aes-256-cbc -salt -in (input) -out (output) -pass file:(keypath)
我需要在Java中完全复制此代码。有一个简单的方法吗?我有可以使用的图书馆吗?
对于第一行,我使用来自Java 7的SecureRandom函数生成一个字节数组,然后使用apache
commons编解码器库将其加为base64。像这样:
byte[] bytes = new byte[32];new SecureRandom().nextBytes(bytes);
String test = new String(Base64.encodeBase64(bytes));
test = test.substring(0, Math.min(test.length(), 10));
如果我没有记错,这应该做同样的事情。
第二,我需要使用提供的公共RSA密钥对包含上述脚本输出的文件进行加密。加密文件或文件中的数据有区别吗?实际文件是否增加位?
但是第三个是困难的,因为它需要盐和aes-256-cbc加密标准。我希望有一个包含所有所需功能的库。如果是这样,谁能指出我正确的方向?我正在阅读有关充气城堡的加密图书馆的信息,但运气不好,找不到我需要的东西。
亲切的问候
回答:
随机字节数组代码很好,但是为什么Base64会对随机字节进行编码,这实际上仅是在仅需要ASCII字符的情况下显示可能使用的必要条件。
对于AES加密,请参阅javax.crypto的Java文档。
使用SecureRandom
创建IV和它前面加上加密数据,它并不需要是秘密。在解密时,只需从数据中选择iv即可用于iv。
以上是 等效于Java中的OpenSSL命令 的全部内容, 来源链接: utcz.com/qa/405551.html