des加密 lua_纯lua实现Base64加密与解密
--Lua--十进制转二进制functiondec_to_binary (data)
local dst= ""local remainder, quotient--异常处理if not data then return dst end --源数据为空if not tonumber(data) then return dst end --源数据无法转换为数字--如果源数据是字符串转换为数字if "string" ==type(data) then
data=tonumber(data)
endwhile true doquotient= math.floor(data / 2)
remainder= data % 2dst=dst..remainder
data=quotientif 0 ==quotient thenbreakend
end--翻转
dst=string.reverse(dst)--补齐8位if 8 >#dst thenfor i = 1, 8 - #dst, 1 dodst= '0'..dst
end
endreturndst
end--Lua--二进制转十进制functionbinary_to_dec (data)
local dst= 0local tmp= 0
--异常处理if not data then return dst end --源数据为空if not tonumber(data) then return dst end --源数据无法转换为数字--如果源数据是字符串去除前面多余的0if "string" ==type(data) then
data=tostring(tonumber(data))
end--如果源数据是数字转换为字符串if "number" ==type(data) then
data=tostring(data)
end--转换for i = #data, 1, -1 dotmp= tonumber(data:sub(-i, -i))if 0 ~=tmp thenfor j = 1, i - 1, 1 dotmp= 2 *tmp
end
end
dst= dst +tmp
endreturndst
end--Lua--base64加密functionbase64encode(data)
local basecode= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"local code= ""local dst= ""local tmp
local encode_num= 0 --base64编码后的分组数,6字节为一组
local num= 0 --编码后后缀"="的个数
local len= 1 --用于统计编码个数,76个编码字符换行--异常处理if not data then return dst end --源数据为空--转换为二进制for i = 1, #data, 1 dotmp= data:byte(i)if 0 > tmp or 255
end
code=code..dec_to_binary(tmp)
end--字符串长度不能被3整除的情况
num= 3 - #data % 3
if 0
end
encode_num= #code / 6
--开始编码for i = 1, #code, 6 dotmp= binary_to_dec(code:sub(i, i + 5))
tmp= tmp + 1 --Lua下标从1开始,切记if 0 == num then --无"="后缀的情况
dst=dst..basecode:sub(tmp, tmp)
len= len + 1encode_num= encode_num - 1
--每76个字符换行if 76 ==len then
dst= dst.."\n"len= 1end
endif 0 < num then --有"="后缀的情况if encode_num == num and 1 ==tmp then
dst= dst..'='len= len + 1encode_num= encode_num - 1num= num - 1
--每76个字符换行if 76 ==len then
dst= dst.."\n"len= 1endelsedst=dst..basecode:sub(tmp, tmp)
len= len + 1encode_num= encode_num - 1
--每76个字符换行if 76 ==len then
dst= dst.."\n"len= 1end
end
end
endreturndst
end--Lua--base64解密functionbase64decode(data)
local basecode= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"local dst= ""local code= ""local tmp, index--异常处理if not data then return dst end --源数据为空
data= data:gsub("\n", "") --去除换行符
data= data:gsub("=", "") --去除'='
for i = 1, #data, 1 dotmp=data:sub(i, i)
index=basecode:find(tmp)if nil ==index thenreturndst
end
index= index - 1tmp=dec_to_binary(index)
code= code..tmp:sub(3) --去除前面多余的两个'00'end--开始解码for i = 1, #code, 8 dotmp= string.char(binary_to_dec(code:sub(i, i + 7)))if nil ~=tmp then
dst=dst..tmp
end
endreturndst
end
des加密 lua_纯lua实现Base64加密与解密相关推荐
- python中base64加密字典_python中的base64加密和解密
import base64 import json def row_data(): content = { "buyer_nick": "家有亲亲", &quo ...
- lua版本base64加密和解密
特别注意 Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下就可以了 原理 将文件读入内存,由于读入 ...
- Http请求加密规则(3DES、Base64、HMAC SHA256)
Http请求加密规则(3DES.Base64.HMAC SHA256) 如果使用了Https请求,那么大多数情况下就无需双方再制定一套加密规则,所以本人讲述的是使用Http请求时,对于一些安全性较高的 ...
- Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试
一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...
- des加密 lua_Windows下为Lua脚本进行加密处理
缘由# 想对Lua脚本进行安全性处理,可惜一直没有想到很好的解决方案,考虑过用原生Lua将脚本编译成二进制代码,也考虑过用zlib将文件进行加密压缩处理,但是感觉都不是最佳方案,今天忽然想到有个东西叫 ...
- Lua Base64加密解密
Base64 加密解密方法相关 -- 加密 function encode(data)local b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结
(1)commons-codec包简介 包含一些通用的编码解码算法.包括一些语音编码器,Hex,Base64.MD5 一.md5.base64.commons-codec包 commons-codec ...
- Base64加密---加密学习笔记(一)
密码的常用术语: (一) 明文:待加密信息 密文:经过加密后的明文 加密:明文转为密文的过程 加密算法:明文转为密文的转换算法 加密密钥:通过加密算法进行加密操作用的密钥 解密:将密文转为明文的过程 ...
- C# DES加密类,16位的加密。
这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...
- java中3des cbc,js與java通用的3DES(ECB,CBC)+Base64加密編碼,解碼解密
J S端加密過程: key的處理: 通過創建指定的key,key必須是16位/24位/32位其中一種,但是常用的3DES加密的key為24位,下面使用的就是24位,key的長度可以隨意指定,在轉換ke ...
最新文章
- html5类选择器选择权重,Python Html5和CSS3的新增功能:CSS权重与CSS3新增选择器
- com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 数据库报错
- Elasticsearch聚合查询案例分享
- c#中namespace、assembly与DLL/EXE
- 使用SysPrep制作Windows2008系统映像
- java_opts 参数与JVM内存调优
- qt tabwidget 设置tab 位置_qml创建TabWidget的案例
- 求你们不要再问我录屏软件了,这些电脑、手机录屏软件全给你们!
- 向已知EXCEL模板写入数据并导出
- sqlite3返回码
- 英雄联盟官网服务器状态查询,官方新功能:各大区服务器状态可查询!
- PicGo+Github图床配置
- 解决Error: Call to undefined function eregi() 报错方法
- StackMap属性解析
- 【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
- html 消除序号,JS实现删除一行数据页面序号重新排序功能。
- 炫酷的ViewPager翻页动画
- 小武学fpgastep3
- 配置DeepStreaks环境
- 优达学城计算机视觉pkl,优达学城机器学习工程师纳米学位项目介绍
热门文章
- navicat的注册出现提示No All Pattern Found! File Already Patched?
- 更改stata外部命令存放位置
- macOS多版本虚拟机镜像免费下载(及教程)
- MCU_segger-JLINK批处理脚本烧录工具-JFlash
- STM32串口通讯——中断方式
- ArcGIS创建拓扑
- OPPO Reno6 6Pro刷root强解BL锁 oppo reno6 Root教程
- 2021-11-02 Kafka、Zookeeper的下载、打开、关闭
- PHP strtotime 将时间转换为时间戳
- c语言中gotoxy,关于gotoxy的问题....