使用PHP进行简单的加密动态验证

“该死,总有人想爬取我的api,怎么办 (╯‵□′)╯︵┴─┴ ”
加个加密不就好啦~~ (๑•̀ㅁ•́ฅ)

思路 (๑•̀ㅁ•́ฅ)

利用PHP内置的date时间,再加上一个动态时间,相加成为一个可根据时间变化的变量,然后通过php生成md5
被请求方可以用相同方法生成一个相同的md5,用if;来验证

实践~ ٩(ˊᗜˋ*)و

1.准备文件

img——·1.png
img——·1.png

index.php

<?php
    $time = date('y-z-H-i');     // 年-年中日-时-分
    $str = "dxinj.com";          // 固定一个值(秘钥)以免单时间容易破解
    $push_str = $time.$str;      // 将两个变量串联
    $key= md5($push_str);        // 将两个变量串联后的字符进行md5加密,成为验证秘钥
?>

api.php

<?php
    /** 相同的加密方法 **/
    $time = date('y-z-H-i');     // 年-年中日-时-分
    $str = "dxinj.com";          // 固定一个值(秘钥)以免单时间容易破解
    $push_str = $time.$str;      // 将两个变量串联
    $key= md5($push_str);        // 将两个变量串联后的字符进行md5加密,成为验证秘钥

    $GetKey = $_GET['key'];      // 获取请求方的key
    /** 判断Key是否正确 */
    if($GetKey == $key){
        echo "key值正确,返回内容";
    }else{
        echo "key值错误或不存在";
    }

?>

测试下,可以嗷

获取下加密后的md5

将获取后的md5手动带入key

行得通嗷

我们将返回内容替换成连接,将请求换成p标签试试

更改后的index.php

<?php
    $time = date('y-z-H-i');     // 年-年中日-时-分
    $str = "dxinj.com";          // 固定一个值(秘钥)以免单时间容易破解
    $push_str = $time.$str;      // 将两个变量串联
    $key= md5($push_str);        // 将两个变量串联后的字符进行md5加密,成为验证秘钥

    $ApiUrl = 'http://localhost/api.php?key='.$key;
    $EchoHtml = file_get_contents($ApiUrl);
?>

<html>
    <head></head>
    <body>
        <p><?php echo $EchoHtml;?></p>
    </body>
</html>

更改后的api.php

<?php
    /** 相同的加密方法 **/
    $time = date('y-z-H-i');     // 年-年中日-时-分
    $str = "dxinj.com";          // 固定一个值(秘钥)以免单时间容易破解
    $push_str = $time.$str;      // 将两个变量串联
    $key= md5($push_str);        // 将两个变量串联后的字符进行md5加密,成为验证秘钥

    $GetKey = $_GET['key'];      // 获取请求方的key
    /** 判断Key是否正确 */
    if($GetKey == $key){
        echo "WDNMD";  // 要返回的内容
    }else{
        echo "key值错误或不存在";
    }

?>

总结 (。•ˇ‸ˇ•。)

还是比较简单的加密。使用于新手嘛~
记得评论下嗷 ( ,,´・ω・)ノ"(´っω・`。)