美文网首页
PHP AES加密解密 2023-02-01

PHP AES加密解密 2023-02-01

作者: 阿然学编程 | 来源:发表于2023-01-31 13:21 被阅读0次
  • AES加密解密
    AES-128:需要提供 16 位的密钥 key
    AES-192:需要提供 24 位的密钥 key
    AES-256:需要提供 32 位的密钥 key
    AES ECB模式生成固定密钥安全性低
    AES CBC模式每次生成的密文都不同安全性高
<?php  
  
function encryptAES($data, $key, $iv) {  
    $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);  
    $encrypted = base64_encode($encrypted);  
    return $encrypted;  
}  
  
function decryptAES($encryptedData, $key, $iv) {  
    $encryptedData = base64_decode($encryptedData);  
    $decrypted = openssl_decrypt($encryptedData, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);  
    return $decrypted;  
}  
  
// 示例用法  
$key = '0123456789abcdef'; // 32字节的密钥  
$iv = 'abcdef0123456789'; // 16字节的初始化向量  
  
$data = 'Hello, world!';  
$encryptedData = encryptAES($data, $key, $iv);  
$decryptedData = decryptAES($encryptedData, $key, $iv);  
  
echo '加密后的数据:' . $encryptedData . "\n";  
echo '解密后的数据:' . $decryptedData . "\n";  
  
?>
/**
 * php>=7.1
 * AES-256-CBC 加密
 * @param $data
 * @return mixed|string
 */
function encrypt_cbc($data)
{
    $key = '235325fdgerteGHdsfsdewred4345341';
    $text = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA);
    return base64_encode($text);
}

/**
 * php>=7.1
 * AES-256-CBC 解密
 * @param $text
 * @return string
 */
function decrypt_cbc($text)
{
    $key = '235325fdgerteGHdsfsdewred4345341';
    $decodeText = base64_decode($text);
    $data = openssl_decrypt($decodeText, 'AES-256-CBC', $key, OPENSSL_RAW_DATA);
    return $data;
}

/**
 * php>=7.1
 * AES-128-ECB 加密
 * @param $str
 * @param $key
 * @return string
 */
function encrypt_ecb($str, $key)
{
    $key = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16);
    $data = openssl_encrypt($str, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
    return strtoupper(bin2hex($data));
}

/**
 * php>=7.1
 * AES-128-ECB 解密
 * @param $str
 * @param $key
 * @return bool|string
 */
function decrypt_ecb($str, $key)
{
    $key = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16);
    $data = hex2bin(strtolower($str));
    $data = openssl_decrypt($data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA, '');
    return $data;
}

相关文章

网友评论

      本文标题:PHP AES加密解密 2023-02-01

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