php实现的三个常用加密解密功能函数示例

下面是该攻略的详细内容。

步骤1:了解加密解密方式

在实现加密解密功能之前,首先需要了解一些常用的加密解密方式。以下是几种常见的加密解密方式:

  1. 对称加密(Symmetric-Key Encryption):使用相同的密钥进行加密和解密,常见的算法有AES、DES等。

  2. 非对称加密(Asymmetric-Key Encryption):使用不同的密钥进行加密和解密,常见的算法有RSA、DSA等。

  3. 哈希加密(Hash Encryption):将明文通过哈希算法转换为固定长度的密文,一般不可逆,常见的算法有MD5、SHA等。

了解这些加密解密方式之后,就可以着手实现具体函数了。

步骤2:实现三个常用加密解密功能函数

实现一:对称加密解密函数

对称加密是使用相同的密钥进行加密和解密,因此需要实现一个加密函数和一个解密函数,同时需要指定密钥和加密算法。以下是一个示例代码:

/**
 * 对称加密函数
 * @param string $data 要加密的明文
 * @param string $key 加密密钥
 * @param string $method 加密算法
 * @return string 加密后的密文
 */
function encrypt($data, $key, $method = 'AES-128-CBC') {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($iv . $encrypted);
}

/**
 * 对称解密函数
 * @param string $data 要解密的密文
 * @param string $key 解密密钥
 * @param string $method 解密算法
 * @return string 解密后的明文
 */
function decrypt($data, $key, $method = 'AES-128-CBC') {
    $data = base64_decode($data);
    $iv_len = openssl_cipher_iv_length($method);
    $iv = substr($data, 0, $iv_len);
    $encrypted = substr($data, $iv_len);
    return openssl_decrypt($encrypted, $method, $key, OPENSSL_RAW_DATA, $iv);
}

以上函数使用openssl库实现,可以指定加密算法、密钥和明文,加密后的结果使用base64编码便于传输和保存。解密过程类似,将密文进行base64解码,然后使用相同的密钥和算法进行解密,得到原始明文。

实现二:非对称加密解密函数

非对称加密需要使用一对密钥进行加密和解密,因此需要实现成对的加密函数和解密函数,同时需要生成一对密钥。以下是一个示例代码:

/**
 * 生成公钥和私钥
 * @return array 公钥和私钥
 */
function generate_keys() {
    $config = array(
        "digest_alg" => "sha512",
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    );
    $resource = openssl_pkey_new($config);
    openssl_pkey_export($resource, $priv_key);
    $pub_key = openssl_pkey_get_details($resource);
    $pub_key = $pub_key["key"];
    return array('private' => $priv_key, 'public' => $pub_key);
}

/**
 * 非对称加密函数
 * @param string $data 要加密的明文
 * @param string $key 加密密钥
 * @return string 加密后的密文
 */
function encrypt($data, $key) {
    $encrypted = '';
    openssl_public_encrypt($data, $encrypted, $key);
    return base64_encode($encrypted);
}

/**
 * 非对称解密函数
 * @param string $data 要解密的密文
 * @param string $key 解密密钥
 * @return string 解密后的明文
 */
function decrypt($data, $key) {
    $decrypted = '';
    $data = base64_decode($data);
    openssl_private_decrypt($data, $decrypted, $key);
    return $decrypted;
}

以上代码使用openssl库生成一对公钥和私钥,加密过程使用公钥加密,解密过程使用私钥解密,加密后的结果使用base64编码便于传输和保存。

实现三:哈希加密函数

哈希加密是将明文通过哈希算法转换为固定长度的密文,一般不可逆,常见的算法有MD5、SHA等。以下是一个示例代码:

/**
 * MD5哈希加密函数
 * @param string $data 要加密的明文
 * @return string 加密后的密文
 */
function md5_encrypt($data) {
    return md5($data);
}

/**
 * SHA1哈希加密函数
 * @param string $data 要加密的明文
 * @return string 加密后的密文
 */
function sha1_encrypt($data) {
    return sha1($data);
}

以上代码使用PHP内部函数实现了MD5和SHA1两种哈希加密方式,将传入的字符串作为明文进行加密,返回加密后的结果。这种方式比对称加密和非对称加密更简单直接,适用于不需要正确解密的场景,比如用户密码的存储。但是由于哈希算法本身的特性,相同的明文加密出来的结果也是一样的,因此需要在加密前加入一些随机因素,使得相同的明文加密出来的结果也不同。

步骤3:使用加密解密函数

实现完加密解密函数之后,可以在代码中使用这些函数。以下是一个示例代码:

$data = "hello world"; // 要加密的明文
$key = "123456"; // 密钥

// 对称加密示例
$encrypted_data = encrypt($data, $key);
echo "对称加密后的密文: " . $encrypted_data . "\n";
$decrypted_data = decrypt($encrypted_data, $key);
echo "对称解密后的明文: " . $decrypted_data . "\n";

// 非对称加密示例
$keys = generate_keys(); // 生成公钥和私钥
$public_key = $keys['public'];
$private_key = $keys['private'];
$encrypted_data = encrypt($data, $public_key);
echo "非对称加密后的密文: " . $encrypted_data . "\n";
$decrypted_data = decrypt($encrypted_data, $private_key);
echo "非对称解密后的明文: " . $decrypted_data . "\n";

// 哈希加密示例
$hashed_data = md5_encrypt($data);
echo "MD5加密后的密文: " . $hashed_data . "\n";
$hashed_data = sha1_encrypt($data);
echo "SHA1加密后的密文: " . $hashed_data . "\n";

以上代码演示了如何使用对称加密、非对称加密和哈希加密三种方式对数据进行加密解密操作。可以根据实际业务需求选择不同的加密解密方式,并注意密钥的保护和管理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php实现的三个常用加密解密功能函数示例 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • php开发工具有哪五款

    当下,php开发工具市场上有很多款工具。针对初学者和专业开发人员我们推荐了以下五款php开发工具: 1. Visual Studio Code Visual Studio Code是一款轻量级的编辑器,可以用来编写PHP程序并集成Git和其他工具来提高开发效率。它具有强大的代码补全、语法高亮、智能重构等功能。此外,Visual Studio Code支持跨平…

    PHP 2023年5月23日
    00
  • 微信小程序中setInterval的使用方法

    当我们需要在微信小程序中定时执行某些任务的时候,可以使用setInterval函数。下面将详细介绍setInterval函数的使用方法和应用场景。 什么是setInterval setInterval是JavaScript语言提供的一个函数,用于定期调用指定的函数,重复执行该函数,直到 clearInterval() 被调用或者程序关闭。setInterva…

    PHP 2023年5月23日
    00
  • PHP实现模拟http请求的方法分析

    本文将详细讲解PHP实现模拟HTTP请求的方法,包括GET/POST请求,Cookie的设置及Headers的配置等内容。 GET请求 最简单的HTTP请求方式是GET请求,使用curl方法,可以轻松实现GET请求: <?php $url = "https://www.example.com/api/user/info?id=123&quot…

    PHP 2023年5月27日
    00
  • PHP论坛实现积分系统的思路代码详解

    下面我将详细讲解“PHP论坛实现积分系统的思路代码详解”的完整攻略。 1. 系统需求 本系统需要实现以下功能: 用户注册、登录、退出; 论坛帖子的发布及评论功能; 用户之间的关注和私信互动功能; 积分体系,包括签到、发帖、评论等操作的积分增加,以及使用积分进行兑换等功能。 2. 数据库设计 本系统需要设计以下表: user表:记录用户的账号信息,包括用户名和…

    PHP 2023年5月27日
    00
  • PHP实现文件上传和下载的示例代码

    以下是“PHP实现文件上传和下载的示例代码”的完整攻略: 文件上传 第一步:编写前端上传表单 首先,在HTML文件或PHP中编写上传表单,以便用户可以选择需要上传的文件并将其发送到服务器。 <form action="upload.php" method="post" enctype="multipar…

    PHP 2023年5月23日
    00
  • php自动获取字符串编码函数mb_detect_encoding

    下面是关于”php自动获取字符串编码函数mb_detect_encoding”的完整攻略。 1. mb_detect_encoding函数概述 mb_detect_encoding 函数是PHP中用于自动检测字符串编码的函数,可以用来检测 UTF-8、GB2312、GBK、BIG5 等常见编码方式的字符串,从而准确地将其转换为目标编码方式。 该函数的语法为:…

    PHP 2023年5月26日
    00
  • Mac系统替换软件应用内文件的详细教程

    以下是“Mac系统替换软件应用内文件的详细教程”的完整攻略。 1. 前言 在 Mac 系统中,有些软件为了防止破解,会对一些关键文件进行加密或者隐藏,这使得我们很难修改软件的一些配置项。但是,如果我们想要对软件进行个性化定制或者优化,就必须替换这些文件。 在本攻略中,我们将会介绍如何替换软件应用内的文件。请注意,在进行类似操作之前,请备份好相关文件,以免出现…

    PHP 2023年5月26日
    00
  • PHP文字转图片功能原理与实现方法分析

    PHP文字转图片功能原理与实现方法分析 原理分析 实现 PHP 文字转图片的原理主要分为两个步骤:文字的绘制和图片的保存。文字的绘制可以使用 PHP 中的 GD 库来实现,GD 库由一系列绘图函数组成,能够支持各种图像操作,比如绘制线条、椭圆、多边形和文本等。图片的保存则可以使用 PHP 中的 imagepng() 函数来实现,该函数主要用于将图像输出到浏览…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部