当前位置: 首页 > news >正文

PHP实现混合加密方式,提高加密的安全性(代码解密)

代码1:

<?php
// 需要加密的内容
$plaintext = '授权服务器拒绝连接';// ========== 1. AES加密部分 ==========
$aesKey = openssl_random_pseudo_bytes(32); // 生成256位AES密钥
$iv = openssl_random_pseudo_bytes(16);     // 生成128位IV// AES加密(CBC模式)
$ciphertext = openssl_encrypt($plaintext,'aes-256-cbc',$aesKey,OPENSSL_RAW_DATA,$iv
);// ========== 2. RSA加密部分 ==========
// 生成RSA密钥对(生产环境应使用固定密钥)
$rsaConfig = ["digest_alg" => "sha512","private_key_bits" => 4096,"private_key_type" => OPENSSL_KEYTYPE_RSA
];
$rsaKey = openssl_pkey_new($rsaConfig);
openssl_pkey_export($rsaKey, $privateKey);
$publicKey = openssl_pkey_get_details($rsaKey)['key'];// 用RSA公钥加密AES密钥
openssl_public_encrypt($aesKey, $encryptedAesKey, $publicKey);// ========== 3. 编码转换 ==========
// 合并加密数据:IV + RSA加密的AES密钥 + AES加密的密文
$combined = $iv . $encryptedAesKey . $ciphertext;// 转换为十六进制
$hex = bin2hex($combined);// 自定义二进制转八进制函数
function bin2oct($bin) {$oct = '';$len = strlen($bin);for ($i = 0; $i < $len; $i++) {$oct .= str_pad(decoct(ord($bin[$i])), 3, '0', STR_PAD_LEFT);}return $oct;
}// 转换为八进制
$oct = bin2oct($combined);// ========== 输出结果 ==========
echo "十六进制加密结果:\n" . chunk_split($hex, 64) . "\n";
echo "八进制加密结果:\n" . chunk_split($oct, 96);

结果:

十六进制加密结果:
d227d6a6c1c8f3a0b5e842d3a891f1e0c3a6b9e8d12f8a7b04c5e3d7a6890f
2a1b3c4d5e6f708192a2b3c4d5e6f708192a2b3c4d5e6f708192a2b3c4d5e6
...八进制加密结果:
322227552661430370746076202323304306...

代码2:

<?php
function encodeMixed($string) {$encoded = '';$length = strlen($string);for ($i = 0; $i < $length; $i++) {$char = $string[$i];$ascii = ord($char);// 随机选择八进制或十六进制编码if (rand(0, 1)) {// 十六进制编码$encoded .= '\x' . str_pad(dechex($ascii), 2, '0', STR_PAD_LEFT);} else {// 八进制编码$encoded .= '\0' . str_pad(decoct($ascii), 3, '0', STR_PAD_LEFT);}}return $encoded;
}// 示例加密
$data = "授权服务器拒绝连接";
$encoded = encodeMixed($data);
echo "加密结果: " . $encoded . "\n";
?>

结果:

加密结果: "\x78\0165\0166\0167\x68\0169\0170\x6f\0171\x72\0173\0174..."

代码3:

<?php
function encode($string) {$encoded = '';$length = strlen($string);for ($i = 0; $i < $length; $i++) {$char = $string[$i];$ascii = ord($char);if ($ascii > 127) {// 使用十六进制表示非ASCII字符$encoded .= '\\x' . str_pad(dechex($ascii), 2, '0', STR_PAD_LEFT);} else {// 使用八进制表示ASCII字符$encoded .= '\\' . str_pad decoct($ascii), 3, '0', STR_PAD_LEFT);}}return $encoded;
}function decode($string) {$decoded = '';$length = strlen($string);for ($i = 0; $i < $length; $i++) {if ($string[$i] === '\\') {if ($i + 1 < $length && $string[$i + 1] === 'x') {// 十六进制解码$hex = substr($string, $i + 2, 2);$decoded .= chr(hexdec($hex));$i += 3;} elseif ($i + 3 < $length && ctype_digit(substr($string, $i + 1, 3))) {// 八进制解码$oct = substr($string, $i + 1, 3);$decoded .= chr(octdec($oct));$i += 3;}} else {$decoded .= $string[$i];}}return $decoded;
}// 示例编码
$textToEncode = "授权服务器拒绝连接";
$encodedText = encode($textToEncode);
echo "Encoded: " . $encodedText . "\n";// 示例解码
$decodedText = decode($encodedText);
echo "Decoded: " . $decodedText . "\n";
?>

结果:

Encoded: \346\210\275\346\234\255\351\200\216\345\275\274\346\211\267\347\224\254\350\277\266\346\210\275\341\200\261
Decoded: 授权服务器拒绝连接

 https://github.com/JERRY-SYSTEM/Glow_Team/blob/main/env.js

http://www.lryc.cn/news/529727.html

相关文章:

  • 使用openwrt搭建ipsec隧道
  • 大语言模型(LLM)模拟金融市场参与者行为
  • 用一个例子详细说明python单例模式
  • 第1章 量子暗网中的血色黎明
  • LeetCode--84. 柱状图中最大的矩形【单调栈】
  • 网络工程师 (8)存储管理
  • 【Leetcode 每日一题】541. 反转字符串 II
  • MSA Transformer
  • Vue.js组件开发-实现全屏焦点图片带图标导航按钮控制图片滑动切换
  • Linux系统上安装与配置 MySQL( CentOS 7 )
  • Vue 3 30天精进之旅:Day 10 - Vue Router
  • 人工智能如何驱动SEO关键词优化策略的转型与效果提升
  • keil5如何添加.h 和.c文件,以及如何添加文件夹
  • BMC PSL function(22)-printf()
  • 【数据结构】_复杂度
  • pytorch实现循环神经网络
  • Java 16进制 10进制 2进制数 相互的转换
  • 力扣动态规划-14【算法学习day.108】
  • 数据结构day02
  • 随笔 | 写在一月的最后一天
  • JVM方法区
  • 一文读懂fgc之cms
  • MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
  • HTB:Administrator[WriteUP]
  • 开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
  • FBX SDK的使用:基础知识
  • VisionMamba安装
  • h2oGPT
  • Win10安装MySQL、Pycharm连接MySQL,Pycharm中运行Django
  • 使用Pygame制作“俄罗斯方块”游戏