相当于java中的OpenSSL命令

相当于java中的OpenSSL命令,java,encryption,openssl,bouncycastle,public-key-encryption,Java,Encryption,Openssl,Bouncycastle,Public Key Encryption,我不太熟悉java或openssl中的文件加密。我从学校学到了基本知识,但从未真正实施过 现在,我收到了以下3条命令: //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 (outpu

我不太熟悉java或openssl中的文件加密。我从学校学到了基本知识,但从未真正实施过

现在,我收到了以下3条命令:

//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中完全复制这一点。有没有一个简单的方法可以做到这一点? 有没有一个图书馆可以让我更容易使用

对于第一行,我使用Java7中的SecureRandom函数生成一个字节数组,然后使用ApacheCommons编解码器库将其重新编码到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));
如果我没弄错的话,这应该做同样的事情

第二,我需要使用提供的公钥对包含上述脚本输出的文件进行加密。加密文件或文件中的数据之间有区别吗?这意味着实际文件会添加位吗

然而,第三个是它变得困难,因为它需要一个salt和aes-256-cbc加密标准。我希望有一个包含所有所需功能的库。如果是这样的话,有人能给我指出正确的方向吗?我在读关于bouncy castle的加密库的书,但没找到我需要的东西


随机字节数组代码很好,但为什么Base64对随机字节进行编码,这实际上只是在仅需要ASCII字符的情况下才需要显示的

有关AES加密,请参阅Java文档


使用
SecureRandom
创建iv,并将其预先添加到加密数据中,它不需要保密。解密时,只需从数据中选择iv用于iv。

这是3个问题,而不是1个问题。这似乎是一个图书馆的要求,这是离题。另请看。好的,谢谢你的信息。现在正在检查javax.crypto。我明天会更新我的问题。另请参见,