开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5825|回复: 149
打印 上一主题 下一主题
收起左侧

[易语言纯源码] 【原创】文本转进制加密解密,支持2 - 36进制,自定义秘钥

  [复制链接]
结帖率:100% (21/21)
跳转到指定楼层
楼主
发表于 2024-10-29 12:11:23 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   河南省新乡市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 憨憨问号 于 2024-10-29 12:12 编辑
前言:

1.纯源码,无嵌套模块
2.灵感来源于https://125.confly.eu.org/forum.php?mod=viewthread&tid=14827786,感谢大神无私开源

3.后面在讲效果和原理解析,不想看我扯淡的直接回复拿源码
文本转任意进制加密.rar (14.71 KB, 下载次数: 115)

效果:
原文:精易论坛真有趣
秘钥:蜂蜜
密文:蜜蜜蜜蜜蜜蜂蜂蜜蜂蜜蜜蜜蜜蜜蜂 蜜蜜蜂蜂蜜蜜蜂蜂蜂蜂蜜蜂蜂蜜蜜 蜜蜂蜂蜂蜜蜂蜜蜜蜜蜂蜜蜜蜜蜂蜜蜂 蜜蜂蜜蜂蜜蜜蜜蜂蜜蜂蜜蜜蜂蜜蜜 蜜蜜蜜蜂蜜蜜蜜蜂蜂蜂蜜蜜蜜蜜蜜 蜜蜜蜂蜂蜜蜜蜜蜂蜂蜂蜂蜜蜂蜂蜜 蜜蜂蜂蜂蜜蜜蜂蜜蜜蜂蜜蜂蜂蜂蜜蜜


原文:我是憨憨问号
秘钥:来哔哩看憨批问号玩植物大战僵尸
密文:号问玩物 号大看尸 号问哔物 号问哔物 大批玩战 问批玩来


原理:
  
子程序名返回值类型公开备 注
进制_10到其它文本型 2 - 36  ;到十进制是有符号的 感谢精易论坛https://125.confly.eu.org/forum.php?mod=viewthread&tid=14827786
参数名类 型参考可空数组备 注
十进制长整数型
到进制整数型2 - 36
变量名类 型静态数组备 注
结果文本型 
结果 = 取空白文本 (66)
_i64toa_s (十进制, 结果, 66, 到进制)
返回 (结果)
子程序名返回值类型公开备 注
进制_转换文本型 2 - 36 感谢精易论坛https://125.confly.eu.org/forum.php?mod=viewthread&tid=14827786
参数名类 型参考可空数组备 注
进制文本文本型进制文本,含有支持含有这些字符: 0123456789abcdefghijklmnopqrstuvwxyz
from整数型默认0=自动识别,0x开头当16,0开头没x当8,1-9开头当10 剩下的类型范围 2-36,超出将无效
to整数型2 - 36
返回 (进制_10到其它 (进制_其它到10 (进制文本, from), to))
子程序名返回值类型公开备 注
进制_其它到10长整数型 2 - 36   感谢精易论坛https://125.confly.eu.org/forum.php?mod=viewthread&tid=14827786
参数名类 型参考可空数组备 注
文本文本型支持0xyyy 0yyy 格式,自动删除前空白符,
文本进制整数型默认0=自动识别,0x开头当16,0开头没x当8,1-9开头当10 剩下的类型范围 2-36,超出将无效
返回 (_strtoi64 (文本, 0, 文本进制))


这段代码用的是论坛大佬发布的帖子https://125.confly.eu.org/forum.php?mod=viewthread&tid=14827786
在此基础上我又进行了二段封装,使其能够将汉字转换为进制数
  
子程序名返回值类型公开备 注
wh_文本到n进制文本型 返回处理好的n进制文本,每个文本之间用空格分割,空格不可省略
参数名类 型参考可空数组备 注
文本文本型填入明文
进制n整数型填写要转换的进制,值可以是2-36之间的任何数
变量名类 型静态数组备 注
un码文本型 
待处理十进制文本文本型0
处理结果文本型 
i整数型 
un码 = 编码_Ansi到Unicode_文本型 (文本)
待处理十进制文本 = 分割文本 (un码, “&#”, )  ' 以un码的恒定格式进行分割
删除成员 (待处理十进制文本, 1, 1)  ' 删除空成员
计次循环首 (取数组成员数 (待处理十进制文本), i)
如果 (处理结果 = “”)  ' 简单的判断,防止分隔符出现在开头
处理结果 = 处理结果 + 进制_10到其它 (到长整数 (待处理十进制文本 [i]), 进制n)  ' 进制转换后储存起来
处理结果 = 处理结果 + “ ”进制_10到其它 (到长整数 (待处理十进制文本 [i]), 进制n)  ' 进制转换后储存起来

计次循环尾 ()
返回 (处理结果)
子程序名返回值类型公开备 注
wh_n进制到文本文本型 返回处理好的文本,每个文本之间用空格分割,空格不可省略
参数名类 型参考可空数组备 注
文本文本型填入n进制文本
进制n整数型填写要转换的进制,值可以是2-36之间的任何数
变量名类 型静态数组备 注
进制文本文本型0
un码文本型 
i整数型 
进制文本 = 分割文本 (文本, “ ”, )  ' 以空格作为分割
计次循环首 (取数组成员数 (进制文本), i)
un码 = un码 + “&#”到文本 (进制_其它到10 (进制文本 [i], 进制n))  ' 进制转换后储存起来
计次循环尾 ()
返回 (编码_Unicode到Ansi_文本型 (un码))

二段封装的原理如下:
1.利用“编码_Ansi到Unicode_文本型”命令将文本转为unicode值
例如“精易论坛”转换后变为“精易论坛
2.对转换后的un码进行分割,以“&#”作为分隔符,分割成一个个十进制整数
3.将十进制整数分别进行进制转换后输出结果


如此一来,已经实现了简单的加密了
例如“精易论坛”加密为14进制的结果为“b8d0 9747 d070 8215


再最后,我又进行了第三段封装,也就是将转换进制后的un码再次进行混淆
  
子程序名返回值类型公开备 注
问号独家_文本加密文本型 输入一段文本,填入任意纯汉字秘钥,自动判断加密逻辑,输出加密后的文本
参数名类 型参考可空数组备 注
原文文本型
秘钥文本型秘钥必须是不重复的纯汉字,否则会出问题,加解密时需保持秘钥一致
变量名类 型静态数组备 注
进制整数型 
秘钥数组原文数组文本型0
秘钥数组文本型36
i整数型 
进制 = 取文本长度 (秘钥) ÷ 2  ' 自动判断加密进制
调试输出 (到文本 (进制)“进制加密”)
如果真 (取文本长度 (原文) < 2)  ' 判断文本是否为空文本
返回 (“原文不可为空!”)
如果真 (取文本长度 (秘钥) < 2)  ' 判断文本是否为空文本
返回 (“秘钥不可为空!”)
如果真 (_只取汉字 (秘钥) ≠ 秘钥)  ' 判断秘钥是否是纯汉字
返回 (“秘钥必须是纯汉字”)
如果真 (进制 > 36 进制 < 2)  ' 限制秘钥位数
返回 (“秘钥不能小于两位或是大于36位”)
如果真 (文本_去重复文本 (秘钥, ) ≠ 秘钥)  ' 进制秘钥重复
返回 (“秘钥的每个文本都不能重复”)
文本_逐字分割_汇编 (秘钥, 秘钥数组)  ' 分割秘钥
计次循环首 (36 - 取数组成员数 (秘钥数组), i)  ' 用空文本填充不足36的位置
加入成员 (秘钥数组, “”)
计次循环尾 ()
原文 = wh_文本到n进制 (原文, 进制)  ' 转换进制
原文 = 到小写 (原文)  ' 防止有大写
' 调试输出 (原文)  ' 加密前的进制文本
' ———————————加密字符———————————
原文 = 子文本替换 (原文, “0”, 秘钥数组 [1], , , )
原文 = 子文本替换 (原文, “1”, 秘钥数组 [2], , , )
原文 = 子文本替换 (原文, “2”, 秘钥数组 [3], , , )
原文 = 子文本替换 (原文, “3”, 秘钥数组 [4], , , )
原文 = 子文本替换 (原文, “4”, 秘钥数组 [5], , , )
原文 = 子文本替换 (原文, “5”, 秘钥数组 [6], , , )
原文 = 子文本替换 (原文, “6”, 秘钥数组 [7], , , )
原文 = 子文本替换 (原文, “7”, 秘钥数组 [8], , , )
原文 = 子文本替换 (原文, “8”, 秘钥数组 [9], , , )
原文 = 子文本替换 (原文, “9”, 秘钥数组 [10], , , )
原文 = 子文本替换 (原文, “a”, 秘钥数组 [11], , , )
原文 = 子文本替换 (原文, “b”, 秘钥数组 [12], , , )
原文 = 子文本替换 (原文, “c”, 秘钥数组 [13], , , )
原文 = 子文本替换 (原文, “d”, 秘钥数组 [14], , , )
原文 = 子文本替换 (原文, “e”, 秘钥数组 [15], , , )
原文 = 子文本替换 (原文, “f”, 秘钥数组 [16], , , )
原文 = 子文本替换 (原文, “g”, 秘钥数组 [17], , , )
原文 = 子文本替换 (原文, “h”, 秘钥数组 [18], , , )
原文 = 子文本替换 (原文, “i”, 秘钥数组 [19], , , )
原文 = 子文本替换 (原文, “j”, 秘钥数组 [20], , , )
原文 = 子文本替换 (原文, “k”, 秘钥数组 [21], , , )
原文 = 子文本替换 (原文, “l”, 秘钥数组 [22], , , )
原文 = 子文本替换 (原文, “m”, 秘钥数组 [23], , , )
原文 = 子文本替换 (原文, “n”, 秘钥数组 [24], , , )
原文 = 子文本替换 (原文, “o”, 秘钥数组 [25], , , )
原文 = 子文本替换 (原文, “p”, 秘钥数组 [26], , , )
原文 = 子文本替换 (原文, “q”, 秘钥数组 [27], , , )
原文 = 子文本替换 (原文, “r”, 秘钥数组 [28], , , )
原文 = 子文本替换 (原文, “s”, 秘钥数组 [29], , , )
原文 = 子文本替换 (原文, “t”, 秘钥数组 [30], , , )
原文 = 子文本替换 (原文, “u”, 秘钥数组 [31], , , )
原文 = 子文本替换 (原文, “v”, 秘钥数组 [32], , , )
原文 = 子文本替换 (原文, “w”, 秘钥数组 [33], , , )
原文 = 子文本替换 (原文, “x”, 秘钥数组 [34], , , )
原文 = 子文本替换 (原文, “y”, 秘钥数组 [35], , , )
原文 = 子文本替换 (原文, “z”, 秘钥数组 [36], , , )
' ———————————加密字符———————————
' 调试输出 (原文)  ' 加密后的进制文本
返回 (原文)
子程序名返回值类型公开备 注
问号独家_文本解密文本型 输入一段文本,填入任意纯汉字秘钥,自动判断加密逻辑,输出解密后的文本
参数名类 型参考可空数组备 注
密文文本型
秘钥文本型秘钥必须是不重复的纯汉字,加解密时需保持秘钥一致
变量名类 型静态数组备 注
进制整数型 
秘钥数组文本型36
i整数型 
进制 = 取文本长度 (秘钥) ÷ 2  ' 自动判断加密进制
调试输出 (到文本 (进制)“进制加密”)
如果真 (取文本长度 (密文) < 2)  ' 判断文本是否为空文本
返回 (“密文不可为空!”)
如果真 (取文本长度 (秘钥) < 2)  ' 判断文本是否为空文本
返回 (“秘钥不可为空!”)
如果真 (_只取汉字 (秘钥) ≠ 秘钥)  ' 判断秘钥是否是纯汉字
返回 (“秘钥必须是纯汉字”)
如果真 (进制 > 36 进制 < 2)  ' 限制秘钥位数
返回 (“秘钥不能小于两位或是大于36位!”)
如果真 (文本_去重复文本 (秘钥, ) ≠ 秘钥)  ' 禁止秘钥重复
返回 (“秘钥的每个文本都不能重复”)
文本_逐字分割_汇编 (秘钥, 秘钥数组)  ' 分割秘钥
计次循环首 (36 - 取数组成员数 (秘钥数组), i)  ' 用空文本填充不足36的位置
加入成员 (秘钥数组, “”)
计次循环尾 ()
' 调试输出 (密文)  ' 解密前的密文
' ———————————加密字符———————————
密文 = 子文本替换 (密文, 秘钥数组 [1], “0”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [2], “1”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [3], “2”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [4], “3”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [5], “4”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [6], “5”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [7], “6”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [8], “7”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [9], “8”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [10], “9”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [11], “a”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [12], “b”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [13], “c”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [14], “d”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [15], “e”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [16], “f”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [17], “g”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [18], “h”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [19], “i”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [20], “j”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [21], “k”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [22], “l”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [23], “m”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [24], “n”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [25], “o”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [26], “p”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [27], “q”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [28], “r”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [29], “s”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [30], “t”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [31], “u”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [32], “v”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [33], “w”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [34], “x”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [35], “y”, , , )
密文 = 子文本替换 (密文, 秘钥数组 [36], “z”, , , )
' ———————————加密字符———————————
密文 = wh_n进制到文本 (密文, 进制)  ' 转换进制
' 调试输出 (密文)  ' 解密后的密文
返回 (密文)


i支持库列表   支持库注释   
spec特殊功能支持库

第三段封装的原理:
1.得到原文和秘钥后,先判断秘钥的位数,决定加密进制,例如秘钥为“你好”则用二进制加密,秘钥为“鸡你太美”则用四进制加密
2.逐字分割秘钥文本,将其用数组储存起来,若秘钥数组不足36个成员,则用“”(空文本)补齐36
3.将原文先用“第二段封装”的代码转换为进制数
4.再将“0”“1”“2”....“x”“y”“z”这36个字符分别用秘钥数组[1] 秘钥数组[2] 秘钥数组[3]...秘钥数组[35] 秘钥数组[36]进行子文本替换。例如秘钥为“你好”时,则会把0替换为你,1替换为好,而2 - z则会被空文本替换。解密时过程与此正好相反


如此一来完成整个加密过程
支持2到36所有进制,密文支持标点,秘钥仅支持汉字,后续可能会优化支持标点符号


制作初衷:
最早我在论坛发过“把文本加密成傻逼二字”的帖子,不知道还有没有
最近我又在b站看到有人艾特我看这个视频:https://www.bilibili.com/video/BV1wTtWeeE9N
以及这个哈基米加密:https://www.bilibili.com/video/BV11mxeeFEDu
但是他们的缺点都很明显,那就是二字加密就只能是二字加密,三字加密就只能是三字加密


所以我突发奇想,能不能做一个自动判断秘钥位数来决定是几进制加密的东西?


所以这个模块就应运而生了(我才不会告诉你其实就是上午拉肚子没去上课在家显得放屁所以写了这么一坨东西,上面鬼扯那么多其实都是借口)

模块和源码一起打包进去了,编译即用


回复本帖祝您新的一年大富大贵


点评

太好了是哈基米我们有救了   安徽省淮南市  发表于 2024-11-3 00:49

评分

参与人数 33好评 +5 精币 +38 收起 理由
小优同学 + 1 + 2 YYDS~!
danshiyuan + 1 + 2 支持开源~!感谢分享
pj小黑屋 + 1 感谢分享,很给力!~
mandxy + 1 感谢分享,很给力!~
wa690602724 + 1 感谢分享,很给力!~
sundanming + 1 感谢分享,很给力!~
ican8 + 1 感谢分享,很给力!~
坤坤大魔王 + 1 感谢分享,很给力!~
vcx + 1 感谢分享,很给力!~
罗大大 + 1 感谢分享,很给力!~
huangdi956 + 1 感谢分享,很给力!~
huangdi9569 + 1 感谢分享,很给力!~
xhping + 1 感谢分享,很给力!~
t176 + 1 感谢分享,很给力!~
zjbin1989 + 1 感谢分享,很给力!~
bear22 + 1 感谢分享,很给力!~
文西哥 + 1 感谢分享,很给力!~
booms + 1 感谢分享,很给力!~
望尘莫及 + 1 感谢分享,很给力!~
扶南 + 1 感谢分享,很给力!~
黯丄辶 + 1 感谢分享,很给力!~
风雨3137 + 1 感谢分享,很给力!~
qiyuer + 1 感谢分享,很给力!~
浮梦 + 1 感谢分享,很给力!~
聿聿 + 1 感谢分享,很给力!~
ewake + 1 感谢分享,很给力!~
Zźh926 + 1 感谢分享,很给力!~
jc520hll + 1 感谢分享,很给力!~
283688410 + 1 支持开源~!感谢分享
inat + 1 + 2 感谢分享,很给力!~
kyo9766 + 1 感谢分享,很给力!~
光影魔术 + 2 开源精神必须支持~
LEOONL + 1 + 3 YYDS~!

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (10/10)

签到天数: 6 天

149
发表于 2025-4-3 00:36:51 | 只看该作者   辽宁省丹东市
正是我需要的,我也有文本需要加密一下
回复 支持 反对

使用道具 举报

148
发表于 2025-2-9 11:46:56 | 只看该作者   江苏省南京市
支持了~~~~~~~~~~~~~~~·
回复 支持 反对

使用道具 举报

签到天数: 4 天

147
发表于 2024-12-15 10:30:28 | 只看该作者   广东省茂名市
        感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:95% (21/22)
146
发表于 2024-12-12 13:19:06 | 只看该作者   山东省济南市
大佬牛批,牛。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

145
发表于 2024-12-4 05:53:51 | 只看该作者   北京市北京市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 2 天

144
发表于 2024-11-23 15:01:14 高大上手机用户 | 只看该作者   广东省*
支持开源666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (27/27)

签到天数: 11 天

143
发表于 2024-11-22 18:42:55 | 只看该作者   浙江省宁波市
文本转进制加密解密,支持2 - 36进制,自定义秘钥
回复 支持 反对

使用道具 举报

结帖率:62% (29/47)

签到天数: 8 天

142
发表于 2024-11-19 19:28:58 | 只看该作者   河南省商丘市
6666666666555555
回复 支持 反对

使用道具 举报

结帖率:100% (100/100)

签到天数: 1 天

141
发表于 2024-11-14 13:14:00 | 只看该作者   云南省昆明市
加密对对对
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表