Chinese darker 2019-10-15 09:11 采纳率: 0%
浏览 257
已采纳

能不能详细讲解一下这个PHP加密算法每行代码的意思?

图片说明

<?php
function encrypt($data, $key) {
    $key = md5($key);
    $x = 0;
    $len = strlen($data);
    $l = strlen($key);
    $char = '';
    $str = '';
    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) {
            $x = 0;
        }
        $char.= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++) {
        $str.= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}
//  解密算法
function decrypt($data, $key) {
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    $char = '';
    $str = '';
    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) {
            $x = 0;
        }
        $char.= substr($key, $x, 1);
        $x++;
    }
    for ($i = 0; $i < $len; $i++) {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
            $str.= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        } else {
            $str.= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}
//  加密解密均需要用同一个加密密钥
$data = 'PHP含秘钥的加密解密算法'; // 被加密信息
$key = 'www.mafutian.net'; // 密钥
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo '明文:' . $data;
echo '<br />';
echo '密文:' . $encrypt;
echo '<br />';
echo '明文:' . $decrypt;
?>


  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-15 09:53
    关注
    加密算法,首先将key做一个md5的计算
    让(原文每个字符+密钥对应每个字符)%256得到密文
    密钥可能比原文长,用完以后,密文再从头开始
    最后,用base64对密文编码,输出
    
    解密
    也是先算出key的md5
    然后反过来,先base64解码得到密文
    密文每个字-密钥,如果<0再加256,得到原文
    最后返回原文
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低