Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP将图片加密写入数据库并解密读取

PHP将图片加密写入数据库并解密读取

原创
作者头像
岳泽以
发布于 2024-05-28 10:34:28
发布于 2024-05-28 10:34:28
38200
代码可运行
举报
文章被收录于专栏:岳泽以博客岳泽以博客
运行总次数:0
代码可运行

加密写入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 生成随机 IV
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC'));
// 加密图片数据
$encrypted_image1_data = base64_encode(openssl_encrypt(file_get_contents($image1), 'AES-256-CBC', $web_site_key, 0, $iv));
$encrypted_image2_data = base64_encode(openssl_encrypt(file_get_contents($image2), 'AES-256-CBC', $web_site_key, 0, $iv));

// 准备 SQL 语句
$stmt = $conn->prepare("INSERT INTO encrypted_images (image1_data, image2_data, phone_number, iv,uid) VALUES (?, ?, ?, ?,?)");

// 绑定参数并执行 SQL 语句
$stmt->bindParam(1, $encrypted_image1_data);
$stmt->bindParam(2, $encrypted_image2_data);
$stmt->bindParam(3, $phone_number);
$iv_base64 = base64_encode($iv);
$stmt->bindParam(4, $iv_base64);
$stmt->bindParam(5, $uid);

try {
  if ($stmt->execute()) {
    $array = array(
      "code" => 200,
      "msg" => "提交成功"
    );
    $apidata = json_encode($array);
    echo $apidata;
  } else {
    throw new Exception("插入失败");
  }
} catch (Exception $e) {
  $array = array(
    "code" => 400,
    "msg" => $e->getMessage()
  );
  $apidata = json_encode($array);
  echo $apidata;
} finally {
  exit;
}

解密读取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 获取需要解密的记录
  $stmt = $conn->prepare("SELECT phone_number, image1_data, image2_data, iv FROM encrypted_images WHERE id = :id");
  $stmt->bindParam(':id', $id);
  $stmt->execute();

  $row = $stmt->fetch(PDO::FETCH_ASSOC);

  // 解密图像数据
  $iv = base64_decode($row['iv']);
  $decrypted_image1_data = openssl_decrypt(base64_decode($row['image1_data']), 'AES-256-CBC', $web_site_key, 0, $iv);
  $decrypted_image2_data = openssl_decrypt(base64_decode($row['image2_data']), 'AES-256-CBC', $web_site_key, 0, $iv);

  // 可以将解密后的图像数据保存为文件或显示在页面上
  // file_put_contents('decrypted_image1.jpg', $decrypted_image1_data);
  // file_put_contents('decrypted_image2.jpg', $decrypted_image2_data);
  // 或者以base64的格式返回
  $array = array(
    "code" => 200,
    "phone" => $row['phone_number'],
    "img1" => base64_encode($decrypted_image1_data),
    "img2" => base64_encode($decrypted_image1_data)
  );
  $apidata = json_encode($array);
  echo $apidata;
  exit;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP7.1实现的AES与RSA加密操作示例
本文实例讲述了PHP7.1实现的AES与RSA加密操作。分享给大家供大家参考,具体如下:
PHP开发工程师
2021/06/03
1.4K0
微信消息加解密Mcrypt在php7.2中废弃与open_ssl替代解决方案
之前在接入微信公众号相关的接口,对微信消息加解密操作时,下载了官网上的php demo下来。
benny
2019/05/24
2K0
用 PHP或Python加密字符串,用iOS解密
可以使用对称加密算法(如 AES)来加密和解密字符串。对称加密适合这种跨平台加密解密的需求,因为可以使用相同的密钥和算法在不同的编程语言和系统之间进行加密和解密。
华科云商小徐
2024/11/12
2120
PHP加密解密方法及常见问题解决方案(php对称加密和非对称加密示例)
php是一种流行的服务器端编程语言,广泛用于web应用程序开发中。在实际应用中,php加密解密是非常常见的操作。本文将介绍php中常见的加密解密方法,以及常见问题的解决方案。
超级小可爱
2024/02/24
1.1K0
【附近的人】系列之API安全(一)
我是老李,大家好,众所周知【附近的人】系列有一段时间没有更新了,搞得好像太监了似的,然而并没有...这一系列只是周期不太稳定、不太调而已,原因说来倒也简单:
老李秀
2019/11/14
7320
【附近的人】系列之API安全(一)
PHP 使用非对称加密算法(RSA)
  以前一直对客户端传给服务器的信息加密这一块一脸懵,如果app里面的用户登录信息被抓包拿到了,大写着 username:root,password:123456,  那不是很尴尬。
Lansonli
2021/10/09
2K0
RSA加密解密(无数据大小限制,php、go、java互通实现)
RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题。明文长度需要小于密钥长度,而密文长度则等于密钥长度。因此当加密内容长度大于密钥长度时,有效的RSA加解密就需要对内容进行分段。
双鬼带单
2019/07/30
5.1K0
6种php加密解密方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166656.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/19
1.7K0
PHP AES加解密:用代码为数据加上保护的盾牌
在网络世界里,数据的传输和存储是一个敏感而重要的问题。为了保护数据的安全性,加密算法是一项不可或缺的技术。而在PHP中,AES(Advanced Encryption Standard)加解密算法是一种常用的选择。本篇博客将深入解析PHP中的AES加解密,让我们一起为数据加上一层坚固的保护盾牌。
繁依Fanyi
2024/01/28
5470
php api接口加密的两种方式
方法一:请求头加密参数 /** * api_sk = 接口密钥 (在面板设置页面 - API 接口中获取) * request_time = 当前请求时间的 uinx 时间戳 ( php: time() / python: time.time() ) * seqID 随机数用来避免同一秒多个请求 * 示例: $request_token = md5($request_time . ‘’ . md5($api_sk)) */ public fu
用户8099761
2023/05/11
1.1K0
php api接口加密的两种方式
在 PHP 7.1 中使用 openssl 取代 mcrypt
从 PHP 7.0 升级到 PHP 7.1 废弃了一个在过去普遍应用的扩展(mcrypt),但是微信官方提供的消息加密解密算法中的核心部分中确实使用 mcrypt 的,Prpcrypt class 的加密方法(encrypt)和解密方法(decrypt),怎么改成 openssl 的函数呢?
Denis
2023/04/15
7910
PHP官方现代化核心加密库 Sodium
Sodium crypto library是一个现代化的,易于使用的软件库,用于加密,解密,签名,密码散列等。
Tinywan
2024/08/19
3650
PHP官方现代化核心加密库 Sodium
RSA加密传输代码示例
涉及敏感数据的传输,双方最好约定使用加密解密。那RSA非对称加密就大有作为了。 服务端可以保留自己的私钥,发给客户端对应的公钥。这样就可以互相加解密了。php中rsa加解密实现:
Tinywan
2019/07/16
1.4K0
php DES加密算法实例分析
public static function encrypt($data,$key){
用户8832582
2021/07/13
1K0
AES-128-CBC-Pkcs7Padding加密PHP实例
(例如17350886066加密后+eupvMFtSc0E7veMi+XCgQ==)
OwenZhang
2022/06/27
1.7K0
AES-128-CBC-Pkcs7Padding加密PHP实例
PHP OpenSSL扩展 – 对称加密
PHP 在进入7.x 时代后,默认就不再附带 mcrypt 扩展,mcrypt 将被 openssl_* 一族函数所替代。所以,对于 PHPer 来说,有必要学习一下 PHP 的 OpenSSL 扩展。
全栈程序员站长
2022/07/11
2.2K0
PHP7以上 不支持mcrypt_module_open方法问题(微信视频号接口对接)
Fatal error: Uncaught Error: Call to undefined function mcrypt_module_open()
用户7657330
2023/10/19
4430
PHP分享几种常用的加密方式
应用场景分别为:用户的唯一标识(文章加密id防止爬虫)、生成有规律的code、登录密码的加密
猿哥
2019/08/01
1K0
PHP分享几种常用的加密方式
php案例:文件的加密解密
贵哥的编程之路
2023/12/18
4270
php案例:文件的加密解密
PHP AES(运算模式 ECB,填充方式PKCS7) 加密解密
class Security{ public static function encrypt($input, $key) { if (substr(PHP_VERSION, 0, 1) == '7') { return self::opensslEncrypt($input,$key); }else{ return self::mcryptEncrypt($input,$key)
IT工作者
2022/02/25
2.1K0
推荐阅读
相关推荐
PHP7.1实现的AES与RSA加密操作示例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档