php7实现blowfish加密与解密

发布于 2022-09-11 16:06:18 字数 876 浏览 16 评论 0

题目描述

加密密匙
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参数

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

隔纱相望 2022-09-18 16:06:18

你可以使用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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文