【问题标题】:Convert HEX string back to AES将 HEX 字符串转换回 AES
【发布时间】:2012-11-01 09:52:51
【问题描述】:

这是我面临的问题。服务器 A(即 IBM i740 主机)上运行着一种机制,它获取安全数据并使用 AES 对其进行加密。现在我,我想得到那个加密数据(AES 加密字符串),但由于它使用乱码,它不能通过 http 传输。因此,为了让我得到它,暴露了一个 Web 服务,它发现 AES 加密字符串 HEX'es 并返回一个 HEX 字符串,如 F51A751CC72124EE95518BECBA1F47C4。我的问题是,有什么方法可以让我将 HEX 值(最好在 Java 中)转换回 AES 加密字符串(我不想解密字符串,只需将其恢复为原始加密值)? 谢谢

【问题讨论】:

    标签: java encryption hex aes


    【解决方案1】:

    总而言之,您面临的问题是您希望通过 HTTP 传输 二进制 数据。 (这与加密无关;这只会使问题复杂化。)有趣的是,我们一直在通过 HTTP 传输二进制数据! (图片等)

    您需要澄清您计划传输数据的确切程度。您是否将其包含在 HTTP POST 中?如果是这样,那么您需要对数据进行编码。 Base64 在这里是理想的选择。

    否则,您可能可以以二进制形式传输它,这只是解释如何您需要传输它的问题,因此可以设置正确的东西(例如 Mime 类型?)以便数据在传输中没有损坏。

    【讨论】:

    • 我认为您误读了我的问题。我可以从 i740 得到一个十六进制字符串就好了(通过网络服务调用)。我的问题是有没有办法将该 HEX 字符串转换回 AES 加密字符串?我不认为我可以从 i740 获得 AES 加密字符串,因为它使用 EBCDIC 作为编码。
    • EBCDID 应该没关系。您会从 Web 服务调用中获得像“F51A75 ...”这样的十六进制文本,对吗?你的网络客户端软件是 Java 的,对吧?如果是这样的话,你的问题就过于复杂了。相反,只需询问如何在 Java 中将十六进制字符串转换为字节数组。如果你问这个,你会找到this answer
    • 感谢您的回答。好吧,我尽量不要使问题过于复杂,所以我没有说明我需要将 HEX 值解码为 EBCDIC 的原因。我必须拥有该值,因为我的 Java 应用程序必须将该值写入 DB2 表 =)
    • 那么这可能是另一个问题/问题。见Convert String from ASCII to EBCDIC in Java?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2016-06-04
    • 2014-09-23
    • 2020-11-13
    • 2013-04-01
    • 2019-07-16
    • 2018-03-20
    相关资源
    最近更新 更多