php7实现blowfish加密与解密

题目描述

加密密匙
2fs5uhnjcnpxcpg9
明文
3280:99:20120201123050
密文
daa745f1901364c0bd42b9658db3db96336758cd34b2a57
图片描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

$key = '2fs5uhnjcnpxcpg9';
$method = 'blowfish';

$privateKey = $key;
$data = '3280:99:20120201123050';
$encrypted = openssl_encrypt($data, $method, $privateKey);
var_dump($encrypted);

你期待的结果是什么?实际看到的错误信息又是什么?

Warning: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended in /home/wwwroot/www.testphp7.com/index.php on line 10
string(32) "2qdF8ZATZMCT14pt78C2ZAxCWc703X/r"

我希望通过openssl_encrypt可以实现 加密模式ECB,不需要初始化向量(IV,Initialization Vector),Padding方式:PKCS5Padding,我改如何修改openssl_encrypt参数

阅读 4.2k
1 个回答

你可以使用openssl_get_cipher_methods() 获取openssl支持的method 所以你这里
$method = 'BF-ECB'; 参考一下我的加密解密


function encrypt($data, $key)
{
    $l = strlen($key);
    if ($l < 16){
        $key = str_repeat($key, ceil(16/$l));
    }

    if ($m = strlen($data)%8){
        $data .= str_repeat("\x00",  8 - $m);
    }
    return openssl_encrypt($data, 'BF-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
}

function decrypt($data, $key)
{
    $l = strlen($key);
    if ($l < 16){
        $key = str_repeat($key, ceil(16/$l));
    }

   return  openssl_decrypt($data, 'BF-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
}



$key = '2fs5uhnjcnpxcpg9';
$data = '3280:99:20120201123050';


$c = encrypt($data, $key);
$d = decrypt($c, $key);
var_dump($c);
var_dump($d);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题