与此php加密函数等效的Android

与此php加密函数等效的Android,php,android,encryption,blowfish,Php,Android,Encryption,Blowfish,我必须在Android上生成与此php函数相同的加密密钥: 我已经测试了很多方法(参数密码实例),但我从未得到相同的结果。 我们如何在android上重现以下功能 PHP: 您的问题是AES不支持8字节键,它只支持16、24和32字节 当您提供8字节密钥时01234567 因此,您需要将密钥长度(可能是pad-it)更改为16字节 AES是Rijndael的一种变体,其固定块大小为128位, 密钥大小为128、192或256位 在这种情况下,您将面临新的问题,即只支持8字节密钥长度的DES 密钥

我必须在Android上生成与此php函数相同的加密密钥: 我已经测试了很多方法(参数密码实例),但我从未得到相同的结果。 我们如何在android上重现以下功能

PHP:


您的问题是
AES
不支持8字节键,它只支持16、24和32字节

当您提供8字节密钥时
01234567

因此,您需要将密钥长度(可能是pad-it)更改为16字节

AES是Rijndael的一种变体,其固定块大小为128位, 密钥大小为128、192或256位

在这种情况下,您将面临新的问题,即只支持8字节密钥长度的
DES

密钥名义上以8字节的形式存储或传输,每个字节带有奇数 平价

但作为替代,您可以使用
ThreeDES
,即使用8*3(24)键长度,我认为这不会与AES冲突


但是,您需要记住函数的弃用

警告 该函数在PHP5.5.0中被弃用,在PHP7.0.0中被删除


您是从php端还是android端得到这个错误的?php可以工作。我必须在android sideBlowfish中使用相同的密码,DES和AES是完全不同的分组密码。请不要混淆它们。
$data = str_pad($string_to_encrypt, 16, "0", STR_PAD_RIGHT );
    $data = pack('H' . strlen($data), $data);


    $iv = str_pad("0123456789ABCDEF", 16, "0", STR_PAD_RIGHT );
    $key = str_pad("01234567", 8, "0", STR_PAD_RIGHT );

    $key = pack('H' . strlen($key), $key);
    $iv = pack('H' . strlen($iv), $iv);


        //ciphermode, key, data, mode, iv
    $baDataCiphered=mcrypt_cbc (MCRYPT_BLOWFISH, $key, $data, MCRYPT_ENCRYPT, $iv);

    return strToHex($baDataCiphered);