当前位置: 首页 > 面试题库 >

等效于Java中的OpenSSL命令

黄跃
2023-03-14
问题内容

我对此不太熟悉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中的类转换为C#,大部分更改已经完成,但是我不确定这部分。我想转换以下代码行: 我已经试过了: 但是它不能正常工作,因为GetBytes()期望翻倍。我不确定将其转换为双精度是否可以解决问题,所以我想在这里询问。 问题答案: 根据您的编码,您可以执行以下操作: 有关参考,请参见http://msdn.microsoft.com/zh- cn/library/ds4kkd5

  • 问题内容: 据我所知,Java没有C#之类的东西。是否有其他Java库提供类似功能?( 反射反射 )有什么区别? 问题答案: 除了达林的出色答案(+1)外,ASM也值得一试。

  • 问题内容: 什么是Java的JavaScript等价物 我需要获取一个数组或所有匹配项的列表 例: 给 http://www.w3schools.com/jsref/jsref_match.asp 问题答案: 检查正则表达式教程 您的代码应类似于以下内容:

  • 问题内容: 有没有类似于unix命令的Java库? 即: file命令是一个很好的工具。我需要一些可以告诉我文件是否确实是我想要的东西的东西。(即图片,文档等) 我知道我可以运行该命令,但是我正在寻找一个Java库,而不是运行实际的unix命令。 问题答案: 在Google上进行快速搜索(对于公认的非显而易见的) “ java魔术文件检测” 会弹出一个相当不错的文章,“从文件中获取Mime类型”,

  • 问题内容: 我正在开发Java程序,我确实需要能够以一定的频率和持续时间播放声音,类似于c#方法System.Beep,我知道如何在C#中使用它,但是我找不到用Java做到这一点的一种方法。是否有等效的方法或另一种方法? 问题答案: 我认为没有办法在便携式2 Java 中用“哔”声播放音乐1。您将需要使用我认为的API …除非找到可以为您简化事情的第三方库。 如果您想走这条路,那么此页面可能会给您

  • 问题内容: 我对Java的异常包不如.NET那样熟悉。我处于一种情况,如果使用C#编程,我会抛出。 在创建自己的子类之前,我需要知道是否应该在Java中抛出类似的异常类型。 确切的情况是: 我的类是一个提供方法的值对象,该方法返回一个int值。但是,在某些情况下,当前值不能作为int提供,因此此类还提供了一个允许API用户知道何时可以安全地调用它们的方法。 如果主叫用户呼叫时是一个异常应该被抛出。