欢迎访问宙启技术站
智能推送

PHP加密解密函数实现方式

发布时间:2023-06-21 18:01:33

PHP加密解密函数的实现方式很多,可以使用各种加密算法,例如对称加密算法(如AES、DES、3DES)和非对称加密算法(如RSA、DSA)。在本篇文章中,我们主要介绍PHP常见的加密解密函数实现方式。

一、对称加密算法

1. AES加密解密函数

AES加密解密函数是PHP中常用的对称加密函数之一,可以使用mcrypt库实现。具体实现步骤如下:

(1)加密函数

function aes_encrypt($data, $key){
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
    return base64_encode($iv.$encrypted);
}

(2)解密函数

function aes_decrypt($data, $key){
    $data = base64_decode($data);
    $iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    $encrypted = substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
    return rtrim($decrypted, "\0");
}

2. DES加密解密函数

DES加密解密函数是另一个常见的对称加密函数,可以使用mcrypt库实现。具体实现步骤如下:

(1)加密函数

function des_encrypt($data, $key){
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_ECB, $iv);
    return base64_encode($encrypted);
}

(2)解密函数

function des_decrypt($data, $key){
    $encrypted = base64_decode($data);
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $decrypted = mcrypt_decrypt(MCRYPT_DES, $key, $encrypted, MCRYPT_MODE_ECB, $iv);
    return rtrim($decrypted, "\0");
}

二、非对称加密算法

1. RSA加密解密函数

RSA加密解密函数是PHP中常用的非对称加密函数之一,可以使用openssl库实现。具体实现步骤如下:

(1)生成RSA公私钥

function rsa_genkey(){
    $res = openssl_pkey_new(array(
        'private_key_bits' => 1024,
        'private_key_type' => OPENSSL_KEYTYPE_RSA,
    ));
    openssl_pkey_export($res, $private_key);
    $public_key = openssl_pkey_get_details($res)['key'];
    return array(
        'public' => $public_key,
        'private' => $private_key,
    );
}

(2)加密函数

function rsa_encrypt($data, $public_key){
    openssl_public_encrypt($data, $encrypted, $public_key);
    return base64_encode($encrypted);
}

(3)解密函数

function rsa_decrypt($data, $private_key){
    openssl_private_decrypt(base64_decode($data), $decrypted, $private_key);
    return $decrypted;
}

2. DSA加密解密函数

DSA加密解密函数是另一个常见的非对称加密函数,可以使用openssl库实现。具体实现步骤如下:

(1)生成DSA公私钥

function dsa_genkey(){
    $res = openssl_pkey_new(array(
        'private_key_bits' => 1024,
        'private_key_type' => OPENSSL_KEYTYPE_DSA,
    ));
    openssl_pkey_export($res, $private_key);
    $public_key = openssl_pkey_get_details($res)['key'];
    return array(
        'public' => $public_key,
        'private' => $private_key,
    );
}

(2)加密函数

function dsa_sign($data, $private_key){
    openssl_sign($data, $signature, $private_key);
    return base64_encode($signature);
}

(3)解密函数

function dsa_verify($data, $signature, $public_key){
    return openssl_verify($data, base64_decode($signature), $public_key);
}

以上是PHP常见的加密解密函数实现方式,可以根据需要选择适合自己的加密解密算法和库。在实际使用中,为了保证加密解密效果和安全性,还需要注意一些细节问题,例如密钥的管理、加密/解密数据的转换等。