美文网首页
使用OpenSSL替代MCrypt实现AES加解密

使用OpenSSL替代MCrypt实现AES加解密

作者: 懒人成长 | 来源:发表于2018-07-31 15:49 被阅读30次

    MCrypt实现AES加解密

    <?php
    
    define( "KEY", "16位" );
    define( "IV", "16位" );
    
    function aes_encode( $sourcestr ) {
        return base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_128, KEY, $sourcestr, MCRYPT_MODE_CBC, IV ) );
    }
    
    function aes_decode( $crypttext ) {
        return mcrypt_decrypt( MCRYPT_RIJNDAEL_128, KEY, base64_decode( $crypttext ), MCRYPT_MODE_CBC, IV );
    }
    
    $source = '{"token": "asdf"}';
    echo aes_encode($source);
    
    
    echo PHP_EOL;
    
    $source ='mWjO06XV8BwMAJG1uKX+N8ITdkuHyPxRFepTYZNNeQU=';
    echo aes_decode($source);
    

    OpenSSL实现AES加解密

    <?php
    
    define( "KEY", "16位" );
    define( "IV", "16位" );
    
    function aes_encode( $sourcestr ) {
        $padded_data = $sourcestr . str_repeat(chr(0), 16 - (strlen($sourcestr) % 16));
        return  base64_encode(openssl_encrypt($padded_data, 'aes-128-cbc', KEY, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, IV));
    }
    
    function aes_decode( $crypttext ) {
        return trim(openssl_decrypt(base64_decode($crypttext), "aes-128-cbc", KEY, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, IV));
    }
    
    
    $source = '{"token": "asdf"}';
    var_dump(aes_encode($source));
    
    $tmp = 'mWjO06XV8BwMAJG1uKX+N8ITdkuHyPxRFepTYZNNeQU=';
    var_dump(aes_decode($tmp));
    

    特殊说明:
    KEY的长度不同会影响到OpenSSLaes-x-cbc是选择128,192还是256。

    KEY的长度 aes-x-cbc
    16 aes-128-cbc
    24 aes-192-cbc
    32 aes-256-cbc

    相关文章

      网友评论

          本文标题:使用OpenSSL替代MCrypt实现AES加解密

          本文链接:https://www.haomeiwen.com/subject/gfshvftx.html