V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
17771258
V2EX  ›  PHP

php7.1 mcrypt_encrypt 用什么替代

  •  
  •   17771258 · 2017-06-01 21:46:50 +08:00 · 5502 次点击
    这是一个创建于 2764 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在程序中有这样一行代码

    ``` php

    $encrypted = mcrypt_encrypt(
    MCRYPT_RIJNDAEL_128,
    "1234567890123456",
    "123456",
    MCRYPT_MODE_CBC,
    "1234567890123456"
    );

    echo base64_encode($encrypted);

    // 得到的结果为 QEwd/DWmy/4yGncCqBofQQ==

    ```
    但是在 `php7.1.*` 中 `mcrypt_encrypt` 函数已经不允许使用,所以想请问各位我应该用什么方法得到同样的结果,在网上搜索有人说用 `openssl_encrypt` 函数替代,但是我测试了一圈还是不能得到正确的结果;

    ``` php

    echo openssl_encrypt(
    "123456",
    "AES-128-CBC",
    "1234567890123456",
    null,
    "1234567890123456"
    );

    // 得到的结果为 1jdzWuniG6UMtoa3T6uNLA==

    ```
    各位有遇到过这样的问题吗,最后是怎么解决的。
    8 条回复    2017-06-07 21:21:49 +08:00
    justanding
        1
    justanding  
       2017-06-01 22:01:13 +08:00
    用 openssl_encrypt
    eoo
        2
    eoo  
       2017-06-01 23:38:07 +08:00 via Android
    官方手册
    Vonex
        3
    Vonex  
       2017-06-01 23:41:17 +08:00
    hash('sha512','xxx')不好吗
    m939594960
        5
    m939594960  
       2017-06-02 11:16:24 +08:00
    chenney
        6
    chenney  
       2017-06-02 17:53:05 +08:00
    null 改成 OPENSSL_ZERO_PADDING 试试
    components
        7
    components  
       2017-06-02 22:56:48 +08:00
    http://php.net/manual/en/migration71.deprecated.php

    The mcrypt extension has been abandonware for nearly a decade now, and was also fairly complex to use. It has therefore been deprecated in favour of OpenSSL, where it will be removed from the core and into PECL in PHP 7.2.
    iyaozhen
        8
    iyaozhen  
       2017-06-07 21:21:49 +08:00
    但貌似有个问题 openssl_decrypt 不支持 PKCS5
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:38 · PVG 10:38 · LAX 18:38 · JFK 21:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.