PHP sm4国密加密解密文件
<?php
// 打开要加密的 PDF 文件
$sourceFilePath = 'path/to/source.pdf';
$encryptedFilePath = 'path/to/encrypted.pdf';
$decryptedFilePath = 'path/to/decrypted.pdf';// 生成一个 AES 密钥(256 位)
$key = random_bytes(32);// 选择一个加密模式(如 CBC)
$cipher = 'aes-256-cbc';// 生成一个随机的初始化向量(IV)
$iv = random_bytes(openssl_cipher_iv_length($cipher));// 加密文件内容并保存到新文件
$sourceFile = fopen($sourceFilePath, 'rb');
$encryptedFile = fopen($encryptedFilePath, 'wb');while (!feof($sourceFile)) {$chunk = fread($sourceFile, 8192);$encryptedChunk = openssl_encrypt($chunk, $cipher, $key, 0, $iv);fwrite($encryptedFile, $encryptedChunk);
}fclose($sourceFile);
fclose($encryptedFile);echo 'File encrypted and saved as encrypted.pdf.' . PHP_EOL;// 解密文件内容并保存到新文件
$encryptedFile = fopen($encryptedFilePath, 'rb');
$decryptedFile = fopen($decryptedFilePath, 'wb');while (!feof($encryptedFile)) {$encryptedChunk = fread($encryptedFile, 8192);$decryptedChunk = openssl_decrypt($encryptedChunk, $cipher, $key, 0, $iv);fwrite($decryptedFile, $decryptedChunk);
}fclose($encryptedFile);
fclose($decryptedFile);echo 'File decrypted and saved as decrypted.pdf.' . PHP_EOL;
?>
phpsm2sm3sm4: php 国密算法 支持 m2 sm3 sm4 SM3WithSM2签名
<?php// 打开要加密的 PDF 文件
$sourceFilePath = 'D:\phpstudy_pro\WWW\public\aa\1.pdf';
$encryptedFilePath = 'D:\phpstudy_pro\WWW\public\aa/encrypted.pdf';
$decryptedFilePath = 'D:\phpstudy_pro\WWW\public\aa/decrypted.pdf';// 生成一个 AES 密钥(256 位)
$key = random_bytes(32);// 选择一个加密模式(如 CBC)
$cipher = 'aes-256-cbc';// 生成一个随机的初始化向量(IV)
$iv = random_bytes(openssl_cipher_iv_length($cipher));// 打开要加密的 PDF 文件
$sourceFile = fopen($sourceFilePath, 'rb');
$sourceContent = fread($sourceFile, filesize($sourceFilePath));
fclose($sourceFile);// 加密文件内容
$encryptedContent = openssl_encrypt($sourceContent, $cipher, $key, 0, $iv);// 将加密后的内容保存到新文件
file_put_contents($encryptedFilePath, $encryptedContent);echo 'File encrypted and saved as encrypted.pdf.'.$iv . PHP_EOL;$encryptedFilePath = 'D:\phpstudy_pro\WWW\public\aa/encrypted.pdf';
$decryptedFilePath = 'D:\phpstudy_pro\WWW\public\aa/decrypted.pdf';// 生成一个 AES 密钥(256 位)
//$key = random_bytes(32);// 选择一个加密模式(如 CBC)
$cipher = 'aes-256-cbc';// 生成一个随机的初始化向量(IV)
//$iv = random_bytes(openssl_cipher_iv_length($cipher));// 打开加密的 PDF 文件
$encryptedFile = fopen($encryptedFilePath, 'rb');
$encryptedContent = fread($encryptedFile, filesize($encryptedFilePath));
fclose($encryptedFile);// 解密文件内容
$decryptedContent = openssl_decrypt($encryptedContent, $cipher, $key, 0, $iv);// 将解密后的内容保存到新文件
file_put_contents($decryptedFilePath, $decryptedContent);echo 'File decrypted and saved as decrypted.pdf.' . PHP_EOL;?>
相关文章:
PHP sm4国密加密解密文件
<?php // 打开要加密的 PDF 文件 $sourceFilePath path/to/source.pdf; $encryptedFilePath path/to/encrypted.pdf; $decryptedFilePath path/to/decrypted.pdf;// 生成一个 AES 密钥(256 位) $key random_bytes(32);// 选择一个加密模式&#…...
CBCGPRibbon 添加Edit、Combox、Hyperlink控件
编辑框、下拉框、网址按钮等是我们常用的控件,对应的类是 CBCGPRibbonEdit CBCGPRibbonComboBox CBCGPRibbonHyperlink 使用实例如下: //Edit CBCGPRibbonEdit* pEdit new CBCGPRibbonEdit(2001, 200); pEdit->SetReadOnly(TRUE); …...
漫话拥塞控制:BBR 是个单流模型
概要(便于检索主题):单流,多流收敛,probe buffer 挤压带宽,maxbw-filter wnd。 我曾经经常说 BBR 是个单流模型,而不是多流收敛模型,也做过不少评论,最近在复听 IETF 的大会,在 IET…...
HTML详解连载(1)
HTML详解连载(1) HTML定义HTML 超文本标记语言标签语法注意拓展 HTML基本骨架解释VS Code 快速生成骨架:标签的关系父子关系(嵌套关系)兄弟关系(并列关系) 代码格式注释 标题标签标签名:h1-h6(双…...
最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架
最新版本的2023UI千月影视APP源码是一款开源的完美版应用程序,具备前后端完美匹配的特点。该应用的后端开发基于ThinkPHP框架,这是一个广泛使用的PHP开发框架,具有稳定性和安全性方面的优势。 2023UI千月影视APP是一款提供电影、电视剧、综艺…...
centos7安装Docker详细步骤(无坑版教程)
一、安装前必读 在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。 注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo…...
Python入门自学进阶-Web框架——39、redis、rabbitmq、git——2
RabbitMQ的exchange,即交换机有不同的类型: 1.direct Exchange(直接交换机) 匹配路由键,只有完全匹配消息才会被转发 2.Fanout Excange(扇出交换机) 将消息发送至所有的队列 3.Topic Exchange(主题交换机) 将路由按模…...
了解IL汇编跳转语句
il代码, .assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 5.entrypointldstr "Enter First Number"call void [mscorlib]System.Console::WriteLine (string)call string …...
JVM运行时五大数据区域详解
前言: java虚拟机再执行Java程序的时候把它所拥有的内存区域划分了若干个数据区域。这些区域有着不同的功能,各司其职。这些区域不但功能不同,创建、销毁时间也不同。有些区域为线程私有,如:每个线程都有自己的程序计数…...
Vuex 使用教程
Vuex 各子模块的内部结构及作用 这是vuex的内部代码结构,所有的子模块都是一样的 state:存放数据状态; action:指派 mutation ; mutation:修改state里面的状态; getter:侧重于对数据…...
springboot启动you will need to add ‘org.slf4j‘ to prefer-application-packages异常解决
摘自个人印象笔记2020-09-12内容:[https://app.yinxiang.com/fx/6c3c7d9d-d5e5-4e5b-b2a1-33d6f29c48a7](https://app.yinxiang.com/fx/6c3c7d9d-d5e5-4e5b-b2a1-33d6f29c48a7) 启动异常: Caused by: java.lang.IllegalArgumentException: LoggerFactory…...
云原生核心原则和特征
云原生(Cloud Native)是一种软件开发和部署方法论,旨在充分利用云计算的优势来构建和管理应用程序。云原生应用程序是专为在云环境中设计、构建和运行的应用程序。 以下是云原生的一些核心原则和特征: 微服务架构:云…...
【ElasticSearch入门】
目录 1.ElasticSearch的简介 2.用数据库实现搜素的功能 3.ES的核心概念 3.1 NRT(Near Realtime)近实时 3.2 cluster集群,ES是一个分布式的系统 3.3 Node节点,就是集群中的一台服务器 3.4 index 索引(索引库) 3.5 type类型 3.6 doc…...
SQL | 注释
2-注释 2.1-单行注释 select prod_name -- 这是一条行内注释 from products; 使用两个连字符(-- ) 放在行内,两个连字符后的内容即为注释内容。 # 这是一条注释 select prod_name from products; 这种注释方式可能有些数据库不支持,所以使用前应该…...
oi知识表+NOIP提高组算法及算法思想总结
算法及算法思想总结 │ By lib │ ├暴力 ├模拟 ├递归及递推:数位统计类 ├构造 ▼├排序算法 │ ├冒泡排序 │ ├选择排序 │ ├计数排序 │ ├基数排序 │ ├插入排序 │ ├归并排序 │ ├快速排序 │…...
【mysql】实现递归查询
mysql实现递归查询的方法:首先创建表,并初始化数据;然后向下递归,利用find_in_set()函数和group_concat()函数、with recursive实现递归查询。 mysql实现递归查询的方法: 1、创建表 DROP TABLE IF EXISTS t_areainf…...
JUC并发编程之原子类
目录 1. 什么是原子操作 1.1 原子类的作用 1.2 原子类的常见操作 原子类的使用注意事项 并发编程是现代计算机应用中不可或缺的一部分,而在并发编程中,处理共享资源的并发访问是一个重要的问题。为了避免多线程访问共享资源时出现竞态条件࿰…...
测试设计中隐藏的边界有哪些?
概述:边界值分析是测试设计一个稳定的部分,但是对黑盒测试人员来讲有时候边界并不是那么明显。这些不明显的边界被称作隐藏的边界。本文提供几个隐藏的边界的例子,还有一些以让隐藏边界显露来设计测试计划的要点方法。 使用边界值分析和等价…...
领航优配:暑期旅游市场热度持续攀升,相关公司业绩有望持续释放
到发稿,海看股份涨停,中广天择、探路者、众信旅行等涨幅居前。 8月8日,在线旅行板块震动上涨,到发稿,海看股份涨停,中广天择、探路者、众信旅行等涨幅居前。 今年以来,国内旅行商场逐渐恢复。文…...
基于 CentOS 7 构建 LVS-DR 集群 及 配置nginx负载均衡
一、构建LVS-DR集群 1、主机规划 Node01:PC Node02:LVS Node03、Node04:Webserver 2、部署环境 2.1 在Node02上配置 2.1.1 安装ipvsadm管理软件按 [rootlocalhost ~]# yum install -y ipvsadm 2.1.2 配置VIP [rootlocalhost ~]# if…...
多智能体强化学习环境PettingZoo:从AEC/并行API到实战应用
1. 项目概述:从单智能体到多智能体的跃迁 如果你是从OpenAI Gym或者Gymnasium一路玩过来的强化学习爱好者,那么当你第一次尝试把研究兴趣扩展到多个智能体时,大概率会感到一阵头疼。单智能体环境里, env.reset() 、 env.step(…...
告别无效修改!2026年最聪明的降AI率工具盘点,精准降低AI率
今天,我们就来盘点几款在2026年备受关注的降AI率工具。它们不单是简单的改写,而是更能从思维逻辑、语言习惯和内容特质入手,帮助你将AI生成内容转化为富有个人特色的自然内容,让你告别无效修改。第一款:智媒ai降ai率工…...
机器学习评估指标全解析:从原理到Python实战
1. 机器学习算法评估指标全景解读在数据科学项目中,选择合适的评估指标往往比模型选择本身更重要。想象一下这样的场景:你花费两周时间优化了一个准确率达到95%的欺诈检测模型,上线后却发现漏掉了80%的真实欺诈案例——这就是错误选择评估指标…...
DeepEar:端到端音频事件检测框架,从原理到边缘部署实战
1. 项目概述:从“听”到“懂”的智能感知新范式最近在探索音频AI领域时,一个名为“DeepEar”的项目引起了我的注意。这并非一个简单的语音识别或音乐分类工具,而是一个由香港科技大学团队开发的、旨在赋予机器“深度听觉”能力的开源框架。简…...
HLA不只是军工仿真:聊聊它在数字孪生、自动驾驶测试和游戏服务器中的另类应用
HLA不只是军工仿真:聊聊它在数字孪生、自动驾驶测试和游戏服务器中的另类应用 提到HLA(High Level Architecture),很多人的第一反应是军工仿真领域的复杂标准。这种刻板印象让不少技术决策者忽略了它在现代分布式系统中的潜力。事…...
从拒稿到接收:我如何通过优化论文格式让Journal of Intelligent Fuzzy Systems审稿人眼前一亮
从拒稿到接收:学术论文格式优化的实战经验分享 第一次收到Journal of Intelligent & Fuzzy Systems的拒稿邮件时,我盯着屏幕足足五分钟——不是因为研究内容被质疑,而是审稿人那句"图表分辨率不足,引用格式混乱"让我…...
别再给外包送钱了:小微企业数字化转型的“平替”方案
小公司或初创团队在数字化转型的起步阶段,最怕的就是陷入“外包深坑”。动辄几十万的开发费用,漫长的沟通周期,最后交付的系统可能还并不贴合实际业务。事实上,现在的职场人真的不必再当这个“冤大头”,因为低代码工具…...
WeDLM-7B-Base镜像免配置:预置logrotate日志轮转与清理策略
WeDLM-7B-Base镜像免配置:预置logrotate日志轮转与清理策略 1. 引言 WeDLM-7B-Base是一款70亿参数、基于扩散机制(Diffusion)的高性能基座语言模型。它采用并行解码技术,在标准因果注意力下实现并行掩码恢复,能够一次…...
Unity AudioSource播放控制全攻略:从Play到UnPause,新手也能搞定的UI交互实战
Unity音频交互实战:从零构建专业级音乐控制器 在游戏和多媒体应用开发中,音频控制是提升用户体验的关键环节。Unity的AudioSource组件提供了强大的音频处理能力,但如何将其与UI系统无缝结合,打造直观易用的音频控制器,…...
重新定义设计效率:Adobe Illustrator自动化脚本的深度技术解析
重新定义设计效率:Adobe Illustrator自动化脚本的深度技术解析 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否曾在深夜的设计项目中,面对数百个需要重…...
