基于 OpenSSL 实现国密 SM4 加解密

if (!in_array('sm4-cbc', openssl_get_cipher_methods())) { printf("不支持 sm4\n"); } $key = 'her-cat.com'; $iv = random_bytes(openssl_cipher_iv_length('sm4-cbc')); $plaintext = '她和她的猫'; $ciphertext = openssl_encrypt($plaintext, 'sm4-cbc', $key, OPENSSL_RAW_DATA , $iv); printf("加密结果: %s\n", bin2hex($ciphertext)); $original_plaintext = openssl_decrypt($ciphertext, 'sm4-cbc', $key, OPENSSL_RAW_DATA , $iv); printf("解密结果: %s\n", $original_plaintext); 运行结果: 加密结果: 45cd787b0a84603ae8fd443b81af4d17 解密结果: 她和她的猫 2023.04.11 更新: 今天收到了一位读者的邮件,他在对接银联支付时遇到了问题,使用 PHP 生成的密文与银联支付提供的 Java 示例生成的密文不一致。 ...

2021-08-23 · 1 分钟 · 371 字 · PHP

PHP 源码阅读笔记:编译与调试 PHP

基本信息 PHP 版本:7.1.0 调试环境:Ubuntu(WSL) 调试工具:GDB、Clion 编译 PHP 下载并安装 PHP: $ wget http://cn2.php.net/distributions/php-7.1.0.tar.gz $ tar -xzvf php-7.1.0.tar.gz $ cd php-7.1.0 $ ./configure --prefix=$HOME/php-7.1.0/build --enable-fpm 注意:$HOME/php-7.1.0/build 是 PHP 执行文件和库文件安装的目录,可以自定义。--enable-fpm 表示同时安装 php-fpm。 ...

什么是惊群问题

前言 我们知道,像 Nginx、Workerman 都是单 Master 多 Worker 的进程模型。 Master 进程用于创建监听套接字、创建 Worker 进程及管理 Worker 进程。 Worker 进程是由 Master 进程通过 fork 系统调用派生出来的,所以会自动继承 Master 进程的监听套接字,每个 Worker 进程都可以独立地接收并处理来自客户端的连接。 ...

大端模式和小端模式

什么是大/小端模式 大端模式 大端模式(Big-Endian)又称大端字节序,由于在网络传输中一般使用的是大端模式,所以也叫网络字节序。 在大端模式中,将高位字节放在低位地址,低位字节放在高位地址。 ...

基于 GitHub Actions 定时推送网址到百度站长平台

前言 刚学会 PHP 的时候写了一个笑话类型的网站,网站的数据是定时从另外一个网站上采集的。但是网站部署在虚拟主机上,所以用不了 crontab 执行定时任务。 解决办法是使用监控宝,定时请求我网站的一个地址,在这个地址里面编写采集数据的逻辑。到了现在已经有很多解决办法,比如 Workerman/Swoole 的定时器组件、GitHub Actions。 ...