mcrypt_encrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_encryptʹ�ø���������������

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

˵��

mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] ) : string

�������ݲ��������ġ�

����

cipher

MCRYPT_ciphername �����е�һ�����������ַ���ֵ���㷨���ơ�

key

������Կ�� �����Կ���Ȳ��Ǹ��㷨���ܹ�֧�ֵ���Ч���ȣ��������ᷢ�����沢���� FALSE

data

ʹ�ø����� cipher �� mode ���ܵ����ݡ� ������ݳ��Ȳ��� n*�����С���������ʹ�� '\0' ���롣

���ص����ij��ȿ��ܱ� data ����

mode

MCRYPT_MODE_modename �����е�һ�����������ַ����е�һ����"ecb"��"cbc"��"cfb"��"ofb"��"nofb" �� "stream"��

iv

Used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If the provided IV size is not supported by the chaining mode or no IV was provided, but the chaining mode requires one, the function will emit a warning and return FALSE.

����ֵ

���ַ�����ʽ�������ģ� ������ʧ��ʱ���� FALSE��

������־

�汾 ˵��
5.6.0 ���ٽ�����Ч���ȵ� key and iv ������ �������������Ч���� mcrypt_decrypt() ������������沢�ҷ��� FALSE�� ֮ǰ�汾�У����ڳ��Ȳ������Կ�ͳ�ʼ������������� '\0' ʹ��ﵽ��Ч���ȡ�

����

Example #1 mcrypt_encrypt() ����

<?php
    
# --- ���� ---

    # ��ԿӦ��������Ķ��������ݣ�
    # ��ʼʹ�� scrypt, bcrypt �� PBKDF2 ��һ���ַ���ת����һ����Կ
    # ��Կ�� 16 �����ַ�����ʽ
    
$key pack('H*'"bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
    
    
# ��ʾ AES-128, 192, 256 ��Ӧ����Կ���ȣ�
    #16��24��32 �ֽڡ�
    
$key_size =  strlen($key);
    echo 
"Key size: " $key_size "\n";
    
    
$plaintext "This string was AES-256 / CBC / ZeroBytePadding encrypted.";

    
# Ϊ CBC ģʽ��������ij�ʼ����
    
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_CBC);
    
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
    

    
# ������ AES ���ݵ����ģ�Rijndael �����С = 128��
    # �������ڱ��������벻���� 00h ��β��
    # ����ΪĬ����ʹ�� 0 ���������ݣ�
    
$ciphertext mcrypt_encrypt(MCRYPT_RIJNDAEL_128$key,
                                 
$plaintextMCRYPT_MODE_CBC$iv);

    
# ����ʼ��������������֮���Թ�����ʱʹ��
    
$ciphertext $iv $ciphertext;
    
    
# �����Ľ��� base64 ����
    
$ciphertext_base64 base64_encode($ciphertext);

    echo  
$ciphertext_base64 "\n";

    
# === ���� ===

    # ���IJ�δ���������ԺͿ��Ŷȱ�����
    # ���Կ������� Padding Oracle ������
    
    # --- ���� ---
    
    
$ciphertext_dec base64_decode($ciphertext_base64);
    
    
# ��ʼ������С������ͨ�� mcrypt_get_iv_size() �����
    
$iv_dec substr($ciphertext_dec0$iv_size);
    
    
# ��ȡ����ʼ�����������
    
$ciphertext_dec substr($ciphertext_dec$iv_size);

    
# ������Ҫ������ĩβ�Ƴ� 0
    
$plaintext_dec mcrypt_decrypt(MCRYPT_RIJNDAEL_128$key,
                                    
$ciphertext_decMCRYPT_MODE_CBC$iv_dec);
    
    echo  
$plaintext_dec "\n";
?>

�������̻������

Key size: 32
ENJW8mS2KaJoNB5E5CoSAAu0xARgsR1bdzFWpEn+poYw45q+73az5kYi4j+0haevext1dGrcW8Qi59txfCBV8BBj3bzRP3dFCp3CPQSJ8eU=
This string was AES-256 / CBC / ZeroBytePadding encrypted.

�μ�