IllegalArgumentException:对于给定的偏移量/长度组合,IV缓冲区太短 [英] IllegalArgumentException: IV buffer too short for given offset/length combination

查看:521
本文介绍了IllegalArgumentException:对于给定的偏移量/长度组合,IV缓冲区太短的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序,该应用程序在PHP中使用openssl_encrypt通过以下方法对文本进行加密. (使用与239422ae7940144f'相同的盐和iv值)

I have one application which is in PHP encrypting text using openssl_encrypt with following method. (Using same value for salt and iv as '239422ae7940144f')

function encrypt_password($password) {
    define('AES_256_CBC', 'aes-256-cbc');
    $sessionId = $password;
    //random number for encrtyption(salt)
    $salt = '239422ae7940144f';
    $iv = $salt; //cipher length
    $encryptedSession = openssl_encrypt($sessionId, AES_256_CBC, $salt, 0, $iv);
    return array('encryptedPassword' => $encryptedSession, 'salt' => $salt);
}

function decrypt_password($result) {
    define('AES_256_CBC', 'aes-256-cbc');
    $vPassword = 'xUP9PwhcXm5xbKIfiSxMCA==';
    //random number for descrypt(salt)
    $salt = '239422ae7940144f';
    $iv = $salt; //cipher length.
    $decrypted = openssl_decrypt($vPassword, AES_256_CBC, $salt, 0, $iv);
    return $decrypted;
}

密码'abc123'的加密提供了'xUP9PwhcXm5xbKIfiSxMCA ==',解密后会返回'abc123'.

Encrypt of password 'abc123' provides 'xUP9PwhcXm5xbKIfiSxMCA==' and decrypting it gives back 'abc123'.

如何找到等效的Java程序来做同样的事情.我试过在使用Java的示例使用提供的密钥和iv来解密openssl aes-256-cbc,但由于

How to find equivalent java program which would do the same. I tried using the example on Using Java to decrypt openssl aes-256-cbc using provided key and iv, but it fails with

java.lang.IllegalArgumentException:IV缓冲区对于给定而言太短 偏移量/长度组合.

java.lang.IllegalArgumentException: IV buffer too short for given offset/length combination.

以下是我正在使用的Java程序中的secretKey和initVector行.

Following are the secretKey and initVector lines in java program I am using.

    final byte[] secretKey = javax.xml.bind.DatatypeConverter.parseHexBinary("239422ae7940144f");
    final byte[] initVector = javax.xml.bind.DatatypeConverter.parseHexBinary("239422ae7940144f");

推荐答案

此"sessionId"的长度是短.必须至少为"iv"长度

The length of this "sessionId" is short. Must be at least "iv" length

这篇关于IllegalArgumentException:对于给定的偏移量/长度组合,IV缓冲区太短的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆