ROBLOX Lua 的轻量级加密公式
2016-3-1 20:32:4
收藏:0
阅读:170
评论:3
在 ROBLOX 的一个项目中,我正在寻找一种纯 Lua 的轻量级加密算法,它可以使用密钥快速加密和解密字符串。我一直在寻找,大多数解决方案需要实现 C 库,或者对我寻找的东西来说太重了。我不太了解加密,但它不应该是非常明显的,但也不应该太复杂。是否有一个我在某些方面错过了的库,可以解决这个问题呢?
点赞
用户1847592
这是一个轻量级的纯 Lua 加密算法的例子。
它可以在 Lua 5.1、5.2 和 5.3 上运行,无需外部库。
do
-- 这是您的秘密 67 位密钥(随机位数即可)
local Key53 = 8186484168865098
local Key14 = 4887
local inv256
function encode(str)
if not inv256 then
inv256 = {}
for M = 0, 127 do
local inv = -1
repeat inv = inv + 2
until inv * (2*M + 1) % 256 == 1
inv256[M] = inv
end
end
local K, F = Key53, 16384 + Key14
return (str:gsub('.',
function(m)
local L = K % 274877906944 -- 2^38
local H = (K - L) / 274877906944
local M = H % 128
m = m:byte()
local c = (m * inv256[M] - (H - M) / 128) % 256
K = L * F + H + c + m
return ('%02x'):format(c)
end
))
end
function decode(str)
local K, F = Key53, 16384 + Key14
return (str:gsub('%x%x',
function(c)
local L = K % 274877906944 -- 2^38
local H = (K - L) / 274877906944
local M = H % 128
c = tonumber(c, 16)
local m = (c + (H - M) / 128) * (2*M + 1) % 256
K = L * F + H + c + m
return string.char(m)
end
))
end
end
local s = 'Hello world'
print( encode(s) ) --> 80897dfa1dd85ec196bc84
print(decode(encode(s))) --> Hello world
2016-03-01 23:22:54
用户3979429
最佳的加密方式是你自己的加密方式。尝试使用独特的加密算法,这样别人就更难猜测。
2016-03-02 14:14:58
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
Lua加密程序
在plc上有一组纯Lua加密程序,但这些程序使用Lua 5.3,而ROBLOX使用的是Lua 5.1.x。
Lua 5.3的优点在于它包含了位操作运算符。在5.3之前,Lua需要外部库来进行位操作。[好吧,其实也有用
math函数进行位操作的纯Lua库,比如lua-bit-numberlua,但5.3是这种程序的第一个实用版本。]Lua 5.3还支持64位整数,而先前的版本仅支持双精度浮点数(53位整数)。当然可以使用32位整数在Lua 5.1中实现加密。最容易的起点是一个简单的置换密码。
一个更有趣且适合实现的密码可能是solitaire。