等效于Java中的OpenSSL命令

我对此不太熟悉Java或openssl中的文件加密。我知道学校的基础知识,但从未真正实施过。

现在,我得到了以下三个命令:

//generate random base64 private key

openssl 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

回到顶部