河南宗教知识竞赛加密算法分析(第二篇)

上回说到

请先看第一回:https://blog.zixutech.cn/archives/664

本回

由于官方2天更新了7次,尤其是今天更新了4次,我人直接裂开,官方没有采用我的强加密手段,而是继续乱jb加密,但是更新频次如此之快,我也懒得搞了,本篇文章主要是分享一下期间几次更新的加解密算法,别说还挺有创意的。

算法代码

我已添加了详细的注释供读者们阅读学习,对代码有疑问可以评论提出。

// 宗教答题第2~5次更新的加密函数
        function encrypt(content) {
            // content 是要加密的值,宗教里就是题号 如1000065

            // 随机字符串 + # + 题号,拼接后进行base64编码
            content = window.btoa('1688106372619ddf853ddce845744766#' + content)
            // code是要穿插在上述content里的内容,其内容是用户ID(需经过base64解码)和csmpagerid(不知道这到底是啥)
            let code = window.atob(memberusercode) + csmpagerid;
            // 开始将code穿插进content进行混淆
            for (let i = 0; i < code.length; i++) {
                // 在1 3 5 7 9 ··· 索引位置逐位插入code的内容
                content = content.slice(0, 2 * i + 1) + code.slice(i, i + 1) + content.slice(2 * i + 1);
            }
            // 因为content是经过base64编码的,所以其最后可能会出现=== == =这样的,如果有则替换为特定的字符串,这里是O0O0OO0O0O
            // 如果没有,则直接在后面加上这个O0O0OO0O0O
            if (content.indexOf('===') == -1 && content.indexOf('==') == -1 && content.indexOf('=') == -1) {
                content += 'O0O0OO0O0O';
            } else {
                content = content.replace('===', 'O0O0OO0O0O');
                content = content.replace('==', 'O0O0OO0O0O');
                content = content.replace('=', 'O0O0OO0O0O');
            }
            // 加密完成,返回数据
            // console.log(content)
            return content;
        }

        // 宗教答题第2~5次更新的解密函数
        function decrypt(content) {
            // content 要解密的内容,一般是题号,解密前的样子大概是
            // M1T0A000N6j0I844N3j2c1y4M1T9Y8x8O5W9R8j0N6W1I9xdOcG5Qbx1N8zcIc4dM4z1I045M3j4Q240N7T1IjMTAwMDAwOQO0O0OO0O0O

            // 设计一个新的字符串用来当做解密后的字符串
            let newStr = ''
            // 逐位循环去除混淆
            for (let i = 0; i < content.length; i++) {
                // 42的意思是,用户ID的长度和csmpagerid的长度一共是42位,所以只需要去除42个字符即可
                if (i >= 42) {
                    // 循环次数大于等于42后,直接不再裁剪,而是拼接最后所有字符串
                    newStr += content.slice(2 * i)
                    break
                }
                // 裁剪字符串,把第0 2 4 6 8 10 ··· 位的混淆字符删掉
                newStr += content.slice(2 * i, 2 * i + 1)
            }
            // 将结果进行base64解码,至此解密完成
            newStr = window.atob(newStr)
            // console.log(newStr)
        }

结语

官方更新是好事,但是也请一次更新到位,用最好的技术来应对作弊,或者能给学生们一份题库用来背,也能达到学习的目的。

希望世上再无形式主义!



本站全部博文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

本文永久地址:https://blog.zixutech.cn/archives/670
本文作者:紫旭

评论

  1. 李硕
    Windows Chrome 96.0.4664.45
    1周前
    2021-11-30 14:39:57

    群加不进去了作者大哥

  2. Huksy7
    Windows Edge 96.0.1054.41
    7天前
    2021-12-02 23:39:10

    小白不会用T T

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇