幽冥大陆(六十六) PHP8.x SSL 文字解密—东方仙盟古法结界

php 8.x 解密代码

复制代码
/**
 * DES-CBC解密(PHP8.2+OpenSSL3.0 专用,绕过DES禁用限制)
 * 适配密钥:  | 密文: 
 */
function 未来之窗_sphp8x($text, $sKey) {
    // 强制输出所有信息,杜绝无返回
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    try {
        // 1. 密钥处理(和PHP5.6完全一致)
        $md5Key = strtoupper(md5($sKey));
        $desKey = substr($md5Key, 0, 8); // 固定为 A192D9E4
        $iv = $desKey;

        // 2. 十六进制转二进制(兜底方案)
        $text = preg_replace('/[^0-9A-Fa-f]/', '', $text);
        $encryptedData = pack("H*", $text); // 替代hex2bin,兼容所有PHP版本

        // 3. 核心:使用PHP内置DES解密(绕开OpenSSL)
        // 模拟mcrypt_decrypt的DES-CBC解密逻辑(PHP5.6原版)
        $decrypted = decrypt_des_cbc($encryptedData, $desKey, $iv);

        if (empty($decrypted)) {
            throw new Exception("解密结果为空");
        }

        // 4. 编码转换+清理(解决中文乱码)
        $decrypted = rtrim($decrypted, "\0\x01\x02\x03\x04\x05\x06\x07"); // 清理填充
        $encoding = mb_detect_encoding($decrypted, ['GBK', 'UTF-8', 'ASCII'], true);
        if ($encoding && $encoding !== 'UTF-8') {
            $decrypted = mb_convert_encoding($decrypted, 'UTF-8', $encoding);
        }

        return $decrypted;

    } catch (Exception $e) {
        return "CyberPHP not vaild Param: " . $e->getMessage() . " | " . openssl_error_string();
    }
}

/**
 * 纯PHP实现DES-CBC解密(不依赖OpenSSL/mcrypt,100%兼容)
 * @param string $data 二进制密文
 * @param string $key 8字节DES密钥
 * @param string $iv 8字节IV
 * @return string 解密后的明文
 */
function decrypt_des_cbc($data, $key, $iv) {
    $blockSize = 8;
    $key = str_pad($key, $blockSize, "\0");
    $iv = str_pad($iv, $blockSize, "\0");
    $decrypted = '';
    $prevBlock = $iv;

    // 分块解密(CBC核心逻辑)
    for ($i = 0; $i < strlen($data); $i += $blockSize) {
        $block = substr($data, $i, $blockSize);
        if (strlen($block) < $blockSize) break;

        // DES单块解密(ECB模式)
        $decryptedBlock = decrypt_des_ecb($block, $key);
        // CBC异或操作
        $decryptedBlock = xor_bytes($decryptedBlock, $prevBlock);
        $decrypted .= $decryptedBlock;
        $prevBlock = $block;
    }

    return $decrypted;
}

/**
 * DES-ECB单块解密(纯PHP实现,无依赖)
 */
function decrypt_des_ecb($block, $key) {
    // 预定义DES S盒(标准DES算法)
    $sbox = [
        [[14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7],[0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8],[4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0],[15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13]],
        [[15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10],[3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5],[0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15],[13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9]],
        [[10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8],[13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1],[13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7],[1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12]],
        [[7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15],[13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9],[10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4],[3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14]],
        [[2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9],[14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6],[4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14],[11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3]],
        [[12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11],[10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8],[9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6],[4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13]],
        [[4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1],[13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6],[1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2],[6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12]],
        [[13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7],[1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2],[7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8],[2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11]]
    ];

    // DES初始置换IP
    $ip = [58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7];
    // 最终置换IP-1
    $ipInv = [40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25];
    // 扩展置换E
    $e = [32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1];
    // P盒置换
    $p = [16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25];
    // 置换选择1
    $pc1 = [57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4];
    // 置换选择2
    $pc2 = [14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32];
    // 移位表
    $shifts = [1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];

    // 密钥处理
    $keyBin = str_split($key);
    $keyBits = [];
    foreach ($keyBin as $chr) {
        $bits = str_pad(decbin(ord($chr)), 8, '0', STR_PAD_LEFT);
        $keyBits = array_merge($keyBits, str_split($bits));
    }
    $keyPc1 = [];
    foreach ($pc1 as $pos) $keyPc1[] = $keyBits[$pos-1];
    $c = array_slice($keyPc1, 0, 28);
    $d = array_slice($keyPc1, 28);
    $subkeys = [];
    for ($i=0; $i<16; $i++) {
        $c = array_merge(array_slice($c, $shifts[$i]), array_slice($c, 0, $shifts[$i]));
        $d = array_merge(array_slice($d, $shifts[$i]), array_slice($d, 0, $shifts[$i]));
        $cd = array_merge($c, $d);
        $subkey = [];
        foreach ($pc2 as $pos) $subkey[] = $cd[$pos-1];
        $subkeys[$i] = $subkey;
    }

    // 数据解密
    $blockBin = str_split($block);
    $blockBits = [];
    foreach ($blockBin as $chr) {
        $bits = str_pad(decbin(ord($chr)), 8, '0', STR_PAD_LEFT);
        $blockBits = array_merge($blockBits, str_split($bits));
    }
    $ipBits = [];
    foreach ($ip as $pos) $ipBits[] = $blockBits[$pos-1];
    $l = array_slice($ipBits, 0, 32);
    $r = array_slice($ipBits, 32);
    for ($i=15; $i>=0; $i--) {
        $temp = $r;
        $eBits = [];
        foreach ($e as $pos) $eBits[] = $r[$pos-1];
        $eXor = [];
        for ($j=0; $j<48; $j++) $eXor[] = ($eBits[$j] == $subkeys[$i][$j]) ? '0' : '1';
        $sOut = [];
        for ($j=0; $j<8; $j++) {
            $row = bindec($eXor[$j*6] . $eXor[$j*6+5]);
            $col = bindec($eXor[$j*6+1] . $eXor[$j*6+2] . $eXor[$j*6+3] . $eXor[$j*6+4]);
            $val = $sbox[$j][$row][$col];
            $bits = str_pad(decbin($val), 4, '0', STR_PAD_LEFT);
            $sOut = array_merge($sOut, str_split($bits));
        }
        $pBits = [];
        foreach ($p as $pos) $pBits[] = $sOut[$pos-1];
        $lXor = [];
        for ($j=0; $j<32; $j++) $lXor[] = ($l[$j] == $pBits[$j]) ? '0' : '1';
        $r = $lXor;
        $l = $temp;
    }
    $rl = array_merge($r, $l);
    $ipInvBits = [];
    foreach ($ipInv as $pos) $ipInvBits[] = $rl[$pos-1];
    $decryptedBits = implode('', $ipInvBits);
    $decryptedBlock = '';
    for ($i=0; $i<64; $i+=8) {
        $byte = substr($decryptedBits, $i, 8);
        $decryptedBlock .= chr(bindec($byte));
    }

    return $decryptedBlock;
}

/**
 * 字节异或辅助函数
 */
function xor_bytes($a, $b) {
    $len = min(strlen($a), strlen($b));
    $result = '';
    for ($i = 0; $i < $len; $i++) {
        $result .= chr(ord($a[$i]) ^ ord($b[$i]));
    }
    return $result;
}

 
 
// ==================== 立即可用的测试代码 ====================
// 替换为你的实际密钥(必须和PHP5.6加密时完全一致!)
 

// ==================== 测试调用 ====================
 
//$sKey = '你的加密密钥'; // 必须和PHP5.6加密时的密钥完全一致
//echo 未来之窗_ 用 ($ciphertext, $sKey);
// ==================== 关键配置(必须启用以下扩展) ====================
// 确保php.ini中启用以下扩展(Windows+PHP8.2):
// extension=openssl
// extension=mbstring
// extension_dir = " )"
 
// $sKey = '你的加密密钥'; // 必须和加密时的密钥完全一致
// echo 未来之窗_safe_通用_decrypt($ciphertext, $sKey);

PHP8.x DES-CBC 解密实战:东方仙盟视角下的「破禁结界术」

在 PHP 开发的「仙盟谱系」中,PHP8.x 如同登顶「化神期」的修士 ------ 宗门颁布了全新的「术法禁令」(OpenSSL3.0 禁用 DES 等老旧算法),却仍需破解前代修士留下的「古法结界」(DES-CBC 加密数据)。本文以 PHP8.2+OpenSSL3.0 环境下的 DES-CBC 解密代码为核心,结合东方仙盟的趣味比喻,拆解这一版本下解密的核心逻辑、适配要点与初学者入门路径,揭秘如何绕过「术法禁令」,还原加密数据的真实面貌。

一、PHP8.x 解密的「仙盟困境」:禁令下的古法破解

东方仙盟的化神期修士,面临着两难境地:宗门为了「术法安全」,禁用了部分威力不足但应用广泛的「古法结界术」(OpenSSL3.0 将 DES 标记为弱算法并限制调用);但大量前代宗门留下的「秘典」(历史业务数据),仍用这种古法加密,必须掌握「破禁之法」才能读取。

PHP8.x(尤其是 8.2)正是这一「困境」的技术映射:

  1. OpenSSL3.0 默认屏蔽 DES 算法的直接调用,传统openssl_decrypt('DES-CBC')会直接失效 ------ 如同仙盟禁用「古法令牌」,直接用令牌破解结界会触发宗门禁制;
  2. Mcrypt 扩展已完全移除,无法依赖旧扩展实现 DES 解密 ------ 如同修炼古法的「本命法器」被销毁;
  3. 字节处理、编码校验更严格,稍有偏差就会导致解密失败 ------ 如同化神期对「阵纹刻画」的精度要求达到极致。

而本文的未来之窗_safe_通用_decrypt函数,便是适配 PHP8.x 的「破禁结界心法」------ 纯 PHP 实现 DES 核心算法,彻底绕开 OpenSSL 的限制,如同修士悟透古法的「底层道则」,无需依赖宗门法器也能破解结界。

二、PHP8.x DES-CBC 解密的「术法拆解」:纯 PHP 实现的破禁之道

如同仙盟化神期修士破解「禁用法术」需「跳出法器依赖,直悟术法本源」,PHP8.x 的 DES-CBC 解密核心是「抛弃 OpenSSL/Mcrypt 扩展,纯 PHP 实现 DES 算法」。我们结合代码逐一拆解这一「破禁心法」:

1. 密钥处理:仙盟「核心令牌」的复刻(与古法完全一致)

php

运行

复制代码
$md5Key = strtoupper(md5($sKey));
$desKey = substr($md5Key, 0, 8); // 固定为 A192D9E4
$iv = $desKey;

即便到了 PHP8.x,破解古法结界的「核心令牌」仍需与加密时完全一致 ------ 如同破解前代修士的结界,必须复刻相同的「令牌纹路」。这一步的关键是「无偏差复刻」:

  • MD5 哈希后转大写(与 PHP5.6 加密时的令牌提纯规则一致);
  • 严格截取前 8 字节(DES 算法的「令牌规格」不可更改);
  • IV 复用密钥(古法结界的「初始阵眼」规则)。

PHP8.x 的适配点:无需额外处理字符编码,因substr在 PHP8.x 中对 ASCII 字符的截取逻辑与旧版本完全一致,确保令牌「纹路无偏差」。

2. 密文预处理:清理「结界杂讯」的兜底方案

php

运行

复制代码
$text = preg_replace('/[^0-9A-Fa-f]/', '', $text);
$encryptedData = pack("H*", $text); // 替代hex2bin,兼容所有PHP版本

仙盟破解结界前,需清理附着在结界上的「灵力杂讯」(非十六进制字符);而pack("H*", $text)是 PHP8.x 的「兜底心法」------ 替代兼容性存疑的hex2bin,如同修士不用宗门配发的「清杂法器」,改用自研手法清理杂讯,确保适配所有环境。

PHP8.x 的细节:pack函数在 8.x 版本中对无效十六进制字符的容错性更稳定,避免因字符过滤不彻底导致「结界形态失真」。

3. 核心解密:纯 PHP 实现 DES-CBC------ 直悟术法本源

php

运行

复制代码
$decrypted = decrypt_des_cbc($encryptedData, $desKey, $iv);

这是 PHP8.x 破禁的核心,如同化神期修士不再依赖法器,而是直接推演「结界术法的底层道则」。decrypt_des_cbcdecrypt_des_ecb函数完全复刻了 DES 算法的核心逻辑,我们拆解其中的「术法道则」:

(1)CBC 模式的「结界分层破解」

php

运行

复制代码
for ($i = 0; $i < strlen($data); $i += $blockSize) {
    $block = substr($data, $i, $blockSize);
    // DES单块解密(ECB模式)
    $decryptedBlock = decrypt_des_ecb($block, $key);
    // CBC异或操作(核心:前块阵眼异或当前块)
    $decryptedBlock = xor_bytes($decryptedBlock, $prevBlock);
    $decrypted .= $decryptedBlock;
    $prevBlock = $block;
}

CBC 模式的解密如同破解「多层嵌套结界」:每一层结界(8 字节密文块)需先通过 DES-ECB 破解单层阵纹,再与前一层的「阵眼」(前块密文 / 初始 IV)进行字节异或,还原真实内容。xor_bytes函数便是「阵眼异或心法」,确保每层结界的破解结果能衔接成完整的秘典。

(2)DES-ECB 核心:复刻「古法阵纹规则」

decrypt_des_ecb函数中预定义的 S 盒、初始置换 IP、最终置换 IP-1、扩展置换 E 等,是 DES 算法的「底层阵纹规则」------ 如同仙盟古法结界的「核心阵纹图谱」:

  • S 盒:DES 算法的「核心变换阵纹」,决定字节的加密 / 解密映射关系;
  • 置换表(IP/IP-1/E/P):阵纹的「排列规则」,确保数据按固定路径变换;
  • 子密钥生成:根据原始令牌推演 16 轮解密所需的「子令牌」,如同修士根据核心令牌生成 16 层破阵信物。

PHP8.x 的关键:纯 PHP 代码复刻这些规则,彻底脱离对 OpenSSL 的依赖,如同修士背熟阵纹图谱,不用法器也能手动推演破阵步骤。

4. 后处理:清理「结界残留」,还原秘典真容

php

运行

复制代码
$decrypted = rtrim($decrypted, "\0\x01\x02\x03\x04\x05\x06\x07"); // 清理填充
$encoding = mb_detect_encoding($decrypted, ['GBK', 'UTF-8', 'ASCII'], true);
if ($encoding && $encoding !== 'UTF-8') {
    $decrypted = mb_convert_encoding($decrypted, 'UTF-8', $encoding);
}

破解结界后,需清理「灵力残留」(填充字符)------PHP8.x 的rtrim支持多字符清理,覆盖 DES 加密的所有常见填充类型;而编码转换则是「校正秘典文字」,PHP8.x 的mb_detect_encoding对编码的识别精度更高,能精准还原中文内容,避免「秘典文字错乱」。

5. 异常兜底:化神期的「护身咒」

php

运行

复制代码
catch (Exception $e) {
    return "CyberPHP not vaild Param: " . $e->getMessage() . " | " . openssl_error_string();
}

即便悟透古法,破解结界仍可能遇到「阵纹反噬」(解密失败),通过try-catch捕获异常并输出openssl_error_string()(即便不用 OpenSSL,也能排查环境问题),如同化神期修士的「护身咒」,避免术法反噬导致程序崩溃。

三、PHP8.x DES-CBC 解密的典型应用场景

如同化神期修士的「破禁术法」有明确的用武之地,PHP8.x 的纯 PHP DES 解密主要应用于以下场景:

1. 老旧系统升级后的历史数据读取

将 PHP5.x/7.x 系统升级到 PHP8.2 后,原有的 DES 加密历史数据(如用户信息、订单记录)无法通过 OpenSSL 直接解密,需用纯 PHP 实现的 DES 算法读取 ------ 如同仙盟升级宗门法阵后,用破禁术法读取前代秘典库中的加密内容。

2. 强合规要求的 PHP8.x 项目

部分金融、政务项目要求使用 PHP8.2+OpenSSL3.0 环境(满足最新安全合规),但又需对接仍使用 DES 加密的第三方接口(如传统物流、税务系统)------ 纯 PHP 解密方案既满足合规要求,又能破解第三方的古法结界。

3. 无扩展依赖的跨环境部署

PHP8.x 项目需部署在极简环境(如轻量容器、无扩展的云函数),无法安装额外扩展,纯 PHP DES 解密方案无需依赖 OpenSSL/Mcrypt,如同修士无需法器也能破阵,适配所有极简部署环境。

四、PHP8.x 解密初学者的「仙盟修炼路径」

对初学者而言,PHP8.x 的纯 PHP DES 解密看似复杂(涉及大量算法细节),实则可按「仙盟修炼路径」逐步掌握:

1. 先跑通测试,再理解原理

无需一开始深究 S 盒、置换表等底层算法,如同仙盟新人先练「破阵招式」,再悟「阵纹原理」:

  • 替换测试代码中的$sKey(如示例中的hcaide)和$ciphertext,执行函数观察解密结果;
  • 确认能成功解密后,再逐步查看decrypt_des_cbc的分块逻辑、xor_bytes的异或操作,理解 CBC 模式的核心。

2. 抓核心流程,忽略算法细节

记住 PHP8.x 解密的核心链路:密钥复刻(8字节)→ 密文兜底转换 → 纯PHP DES-CBC分块解密(ECB+异或)→ 清理填充+编码转换先掌握这个链路,S 盒、置换表等底层算法可作为「进阶修炼内容」,入门阶段无需深究。

3. 对比学习,理解版本差异

将 PHP8.x 的纯 PHP 解密方案与 PHP7.x 的 OpenSSL 方案对比:

  • PHP7.x 可通过兼容配置调用 OpenSSL 的 DES 算法;
  • PHP8.x 需绕开 OpenSSL 限制,直抵算法本源;
  • 对比后能清晰理解「为何 PHP8.x 需要纯 PHP 实现」,而非死记代码。

4. 调试优先,用分段输出找问题

初学者解密失败时,可在代码中增加分段输出:

  • 输出$desKey确认密钥是否正确(如示例中hcaide的 MD5 大写前 8 位是否为A192D9E4);
  • 输出$encryptedData确认密文转换是否正确;
  • 输出decrypt_des_ecb的单块解密结果,排查核心算法是否正常 ------ 如同仙盟新人破阵失败时,先查令牌、再查阵纹,逐步定位问题。

五、总结

PHP8.x 的 DES-CBC 解密,是「破禁与兼容」的典型技术场景 ------ 如同化神期修士既要遵守宗门新禁令,又要掌握古法破阵之术。对初学者而言,无需畏惧算法的复杂度:先跑通测试,再抓核心流程,最后对比版本差异,就能逐步掌握这一技术。

而从技术本质来看,PHP8.x 的纯 PHP DES 解密方案,核心是「回归算法本源」------ 当扩展依赖被限制时,直接复刻算法的底层逻辑,这也是编程的核心思维:工具(扩展)会变,但算法的底层道则不变。如同仙盟的传承:法器会更新,但术法的核心道则永远相通。掌握了这份「回归本源」的思维,不仅能搞定 PHP8.x 的 DES 解密,更能应对其他算法、其他版本的兼容难题。

在 PHP 开发的「仙盟谱系」中,PHP8.x 如同登顶「化神期」的修士 ------ 宗门颁布了全新的「术法禁令」(OpenSSL3.0 禁用 DES 等老旧算法),却仍需破解前代修士留下的「古法结界」(DES-CBC 加密数据)。本文以 PHP8.2+OpenSSL3.0 环境下的 DES-CBC 解密代码为核心,结合东方仙盟的趣味比喻,拆解这一版本下解密的核心逻辑、适配要点与初学者入门路径,揭秘如何绕过「术法禁令」,还原加密数据的真实面貌。

阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

相关推荐
未来之窗软件服务11 小时前
幽冥大陆(六十五) PHP6.x SSL 文字解密—东方仙盟古法结界
网络·数据库·ssl·加解密·仙盟创梦ide·东方仙盟
GRsln12 小时前
解决微信小程序报“errno“:600001 ERR_CERT_AUTHORITY_INVALID问题
nginx·微信小程序·小程序·ssl
以为不会掉头发的詹同学13 小时前
[加密证书]HTTPS证书-TLS/SSL加密流程
网络协议·https·ssl
未来之窗软件服务13 小时前
幽冥大陆(六十四) PHP7.0 SSL 文字解密—东方仙盟筑基期
php·ssl·加解密·仙盟创梦ide·东方仙盟
汽车通信软件大头兵13 小时前
汽车MCU 信息安全--数字证书
服务器·https·ssl
以为不会掉头发的詹同学13 小时前
【TCP通讯加密】TLS/SSL 证书生成、自签名证书、请求 CA 签发证书以及使用 Python TCP 服务器与客户端进行加密通讯
服务器·python·tcp/ip·ssl
是娇娇公主~1 天前
HTTPS【密钥交换+证书校验】流程讲解
网络·网络协议·面试·https·ssl
星哥说事1 天前
SSL/TLS 证书管理,文件与数据库加密技术
数据库·网络协议·ssl
RollingPin1 天前
sudo gem install cocoapods 报错处理1
ssl·cocoapods·error·gem·安装失败