美文网首页Lua
GameGuardian Lua base64加密

GameGuardian Lua base64加密

作者: binx6 | 来源:发表于2020-03-24 19:29 被阅读0次

利用GG进行base64加密,不喜勿喷,友情提示:不能直接使用

----------------------------------------打上花火----------------------------------------


1.首先我们需要简单科普一下base64是什么:

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

【中文名】 基于64个可打印字符来表示二进制数据 外文名 base64 属    性 编码方式 应    用 用于传输8Bit字节代码 定    义 8Bit字节代码的编码方式之一 可用于 在HTTP环境下传递较长的标识信息 特    性 Base64编码具有不可读性

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。


2.那么知道了工作原理,我们就可以开始写加密,那么加密原理又是什么呢?请看以下代码:

local function encodeBase64(source_str)

    local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

    local s64 = ''

    local str = source_str

    while #str > 0 do

        local bytes_num = 0

        local buf = 0

        for byte_cnt=1,3 do

            buf = (buf * 256)

            if #str > 0 then

                buf = buf + string.byte(str, 1, 1)

                str = string.sub(str, 2)

                bytes_num = bytes_num + 1

            end

        end

        for group_cnt=1,(bytes_num+1) do

            local b64char = math.fmod(math.floor(buf/262144), 64) + 1

            s64 = s64 .. string.sub(b64chars, b64char, b64char)

            buf = buf * 64

        end

        for fill_cnt=1,(3-bytes_num) do

            s64 = s64 .. '='

        end

    end

    return s64

end


3.从上面我们得到了思路,开始写支持GG执行的代码,让GG兼容这个工作:

baseEecrypt = gg.prompt({[1]="输入代码(复制粘贴即可)"}, {  },{[1]="text"}) -- 利用prompt框来进行操作

if baseEecrypt == nil then  -- 如果没有选择或取消选择

gg.setVisible(true) -- 弹出界面

os.exit() -- 结束

end -- 到这里已经结束了,也就就不存在运行bug一说

操作项执行效果如图1-1:

1-1

4.好,那么有了操作项我们就可以把base64的加密原理写入(写在操作项的后面,执行体的前面),这里不再复述


5.接下来我们写执行体,什么是执行体呢?总体来说就是让代码运作起来的东西,也叫做工作体

这里我们将会用到全局变量,替换,还有简单的文件写入方式

废话不多说,看代码:

JMDM = baseEecrypt[1] -- 设置变量

setcodes = encodeBase64(JMDM) -- 设置执行体

setcodes = string.gsub(setcodes, "'", "'") -- 逐字替换

file = io.open("/storage/emulated/0/base64加密结果.txt", "w") -- 写出路径,如果有原文件将会覆盖写出

file:write(setcodes) -- 写入文件

xpcall(print(setcodes),error) --这里是打印出结果,方便查看,如果有错误将会抛出

file:close() -- 结束写入

base_src = loadfile("/storage/emulated/0/base64加密结果.txt") -- 加载

pcall(base_src) -- 保护调用加载


好了,该干的我们已经做完了,是不是觉得很简单?

下面我们来开始实战测试

例:我们输入:ABCDEFGHIJKLMNOPQRSTUVWXYZ

加密效果如图1-2,1-3

1-2 1-3

总结:以上就是利用GG来进行base64加密的教程

解码原理:其实解码原理也很简单,逆推即可,这里也不多复述

如果小伙伴们怕被别人秒解怎么办?问题不大,你只需要按照我给出的思路将base64和RC4写在一起即可,不要忘了写密码哦,也不要随意的把密码给出去,如果有能力的可以加入XOR来进行简单的异或操作。

Thats All.

相关文章

  • GameGuardian Lua base64加密

    利用GG进行base64加密,不喜勿喷,友情提示:不能直接使用 -------------------------...

  • iOS 关于加密

    常见的iOS代码加密常用加密方式包括Base64加密、MD5加密、AES加密、RSA加密等。 Base64加密 B...

  • 前后端参数加密

    一,常用类型加密方式 1,base64无秘钥加密2,base64秘钥加密3,AES 加密4,RSA加密 二,加密方...

  • 加密

    AES 加密 密钥生成 数据填充至16的倍数 AES 加密 BASE64 加密 解密 BASE64 解密 AES ...

  • Base64加密解密

    参考 Java8 Base64 BASE64在线加密解密 Android自带Base64加密 这里要注意以上方法...

  • JAVA加密系列(一)-Base64与单向加密算法MD5、SHA

    JAVA加密系列(一)-Base64与单向加密算法MD5、SHA、HMAC Base64 Base64是网络上最常...

  • 前端js几种加密/解密方法

    一、base64加密 base64的github地址 示例 二、MD5加密(不可逆) MD5加密的github地址...

  • Base64加密解密

    /// /// 实现Base64加密解密/// public sealed class Base64{/// ...

  • iOS之加密解密

    base64与md5 base64 : 公开的代码加密,url加密md5:用户密码存储 文件校验 base64 1...

  • iOS加密

    什么是加密? 加密 = 算法 + 钥匙 base64只是编码,不能归类于加密,base64编码原理 算法是固定且公...

网友评论

    本文标题:GameGuardian Lua base64加密

    本文链接:https://www.haomeiwen.com/subject/xtyayhtx.html