【问题标题】:How to use openssl to decrypt data encrypted by Java using AES如何使用openssl解密Java使用AES加密的数据
【发布时间】:2014-11-12 19:32:21
【问题描述】:

我正在用 Java 生成一个 AES 公钥和 IV(初始化向量)来加密数据。我需要使用openssl 命令对此进行解密。考虑到我将 AES 密钥和 IV 存储在磁盘上,这可能吗?

下面是加密逻辑

    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, key, iv);
    byte[] stringBytes = pass.getBytes();
    byte[] raw = cipher.doFinal(stringBytes);
    return Base64.encodeBase64String(raw);

生成 AES 密钥

   SecretKey secret_key = KeyGenerator.getInstance("AES").generateKey();

生成 IV

   SecureRandom random = new SecureRandom();
   IvParameterSpec iv = new IvParameterSpec(random.generateSeed(16));

我将 IV 和 AES 密钥保存在未加密的磁盘中的文件中。我现在如何使用openssl 使用这两个参数解密数据?

【问题讨论】:

    标签: java cryptography openssl aes public-key-encryption


    【解决方案1】:

    将它们保存为十六进制并使用例如

    -K `cat key.hex` -iv `cat iv.hex`
    

    所以这是使用反引号而不是单引号。

    【讨论】:

    • 这个java生成的SecretKey可以转换成16进制吗?
    • getEncoded 为您提供 AES 原始密钥的字节数组。我会留给你找到无数关于如何将字节数组转换为十六进制的答案之一。
    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多