精易论坛

标题: 完整版,置入汇编base64编码和解码 [打印本页]

作者: taizhong    时间: 2021-3-7 14:54
标题: 完整版,置入汇编base64编码和解码
完美无bug,置入汇编base64编码和解码编码和解码都比精易模块速度快



置入汇编base64编码和解码完整版.e (10.27 KB, 下载次数: 386)



补充内容 (2021-3-10 11:16):
此源码中,易语言除法运算记得 到整数()转换下,否则会出现长度计算错误

补充内容 (2021-3-27 03:25):
统一回复下,改成转字节集还不是有手就行?

补充内容 (2021-4-26 20:32):
完整版+测试程序在76楼
http://125.confly.eu.org/forum.php?mod= ... 00&pid=21138328
作者: gaoqing    时间: 2021-3-7 15:42
谢谢分享!
作者: 廿六    时间: 2021-3-7 15:44
我猜错的话应该是在zes盾里面的命令吧
作者: fengshou    时间: 2021-3-7 16:30
感谢感谢,学习一下
作者: 花老板    时间: 2021-3-7 16:58
好家伙,不卡不蹦么
作者: 田兵    时间: 2021-3-7 18:42
感谢感谢,学习一下
作者: tian89    时间: 2021-3-7 18:57
我想问一下如果我懂英语我搞易语言干嘛?如果我搞易语言用汇编又是在搞什么?是学习还是依赖?原理没有学到只是依赖的调用汇编!你说我能力是进步了还是倒退了!肯能你说软件速度快了软件进步了!
作者: hrb011011    时间: 2021-3-7 19:40
能修改码表不? 我想改成非标base64
作者: taizhong    时间: 2021-3-7 19:53
hrb011011 发表于 2021-3-7 19:40
能修改码表不? 我想改成非标base64

可以啊,有源码怎么都能改
作者: taizhong    时间: 2021-3-7 19:53
廿六 发表于 2021-3-7 15:44
我猜错的话应该是在zes盾里面的命令吧

那你猜错了
作者: taizhong    时间: 2021-3-7 19:53
花老板 发表于 2021-3-7 16:58
好家伙,不卡不蹦么

好家伙,不卡不蹦啊
作者: taizhong    时间: 2021-3-7 20:03
hrb011011 发表于 2021-3-7 19:40
能修改码表不? 我想改成非标base64

看这里
https://blog.csdn.net/hackerwin7/article/details/44749487
作者: singlecolor    时间: 2021-3-8 01:32
来看看
作者: wuqingg    时间: 2021-3-8 08:39
tian89 发表于 2021-3-7 18:57
我想问一下如果我懂英语我搞易语言干嘛?如果我搞易语言用汇编又是在搞什么?是学习还是依赖?原理没有学到 ...

汇编猛啊,有些东西易语言做不到那么好,所以要以来一些别的语言来加持,你想想啊,API是英文的吧,易语言要调用API
作者: sinewtec    时间: 2021-3-8 09:27
支持开源~!感谢分享
作者: 外星星人    时间: 2021-3-8 10:53

支持开源~!感谢分享
作者: 噢噢    时间: 2021-3-8 11:59
学习一下谢谢
作者: hrb011011    时间: 2021-3-8 16:07
taizhong 发表于 2021-3-7 19:53
可以啊,有源码怎么都能改

你提供的汇编代码里面能修改吗?可否给例子,谢谢
作者: taizhong    时间: 2021-3-8 16:33
hrb011011 发表于 2021-3-8 16:07
你提供的汇编代码里面能修改吗?可否给例子,谢谢

汇编代码不能改
你提供码表和解码表,才能重新写一段汇编
作者: hrb011011    时间: 2021-3-8 16:49
taizhong 发表于 2021-3-8 16:33
汇编代码不能改
你提供码表和解码表,才能重新写一段汇编

是否可以参考下面这种写法(可行有bug会修改原文),可以定义码表变量,变形的目的就是不想公开自己的码表

.子程序 Base64编码_变形, 字节集, 公开, 会修改原文,注意保存原文
.参数 原文, 字节集, , 会修改原文,注意保存原文
.局部变量 原文指针, 整数型
.局部变量 结果指针, 整数型
.局部变量 码表指针, 整数型
.局部变量 I指针, 整数型
.局部变量 J指针, 整数型
.局部变量 码表, 字节集
.局部变量 结果, 字节集
.局部变量 原文长度, 整数型
.局部变量 倍数, 整数型
.局部变量 补码, 整数型
.局部变量 余数, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 ll, 整数型

.如果真 (取字节集长度 (原文) ≤ 0)
    返回 ({  })
.如果真结束
' 码表: “ABCD.............”
码表 = { 65, 67,......... }
码表指针 = 取变量数据地址_字节集 (码表)
原文长度 = 取字节集长度 (原文)
倍数 = 到整数 (原文长度 \ 3)  ' 用来得出补码数。
余数 = 到整数 (原文长度 % 3)
补码 = 0
.如果真 (余数 ≠ 0)
    倍数 = 倍数 + 1
    补码 = 3 - 余数
    原文 = 原文 + 取空白字节集 (补码)
.如果真结束
原文指针 = 取变量数据地址_字节集 (原文)
ll = 原文长度 + 补码
结果 = 取空白字节集 (倍数 × 4)
结果指针 = 取变量数据地址_字节集 (结果)
i = 0
I指针 = 取变量数据地址_整数型 (i)
j = 0
J指针 = 取变量数据地址_整数型 (j)
.变量循环首 (1, ll - 2, 3, i)
    置入代码 ({ 139, 69, 228, 139, 77, 208, 139, 9, 138, 92, 8, 255, 139, 77, 248, 139, 69, 216, 83, 139, 93, 200, 139, 27, 3, 195, 91, 80, 51, 192, 138, 195, 192, 232, 2, 3, 193, 139, 216, 88, 138, 11, 136, 8, 139, 69, 228, 139, 77, 208, 139, 9, 51, 219, 138, 92, 8, 255, 138, 60, 8, 139, 77, 248, 139, 69, 216, 83, 139, 93, 200, 139, 27, 3, 195, 91, 80, 51, 192, 138, 195, 192, 224, 4, 36, 48, 138, 231, 192, 236, 4, 2, 196, 50, 228, 3, 193, 139, 216, 88, 138, 11, 136, 72, 1, 139, 69, 228, 139, 77, 208, 139, 9, 51, 219, 138, 28, 8, 138, 124, 8, 1, 139, 77, 248, 139, 69, 216, 83, 139, 93, 200, 139, 27, 3, 195, 91, 80, 51, 192, 138, 195, 192, 224, 2, 36, 60, 138, 231, 192, 236, 6, 2, 196, 50, 228, 3, 193, 139, 216, 88, 138, 11, 136, 72, 2, 139, 69, 228, 139, 77, 208, 139, 9, 51, 219, 138, 92, 8, 1, 139, 77, 248, 139, 69, 216, 83, 139, 93, 200, 139, 27, 3, 195, 91, 80, 51, 192, 138, 195, 36, 63, 3, 193, 139, 216, 88, 138, 11, 136, 72, 3, 139, 93, 200, 139, 11, 139, 193, 131, 192, 4, 137, 3 })
.变量循环尾 ()
.如果真 (补码 > 0)
    原文 = 取字节集左边 (原文, 原文长度 - 补码)
.如果真结束
结果 = 取字节集左边 (结果, 倍数 × 4 - 补码) + 取重复字节集 (补码, { 61 })
返回 (结果)

作者: taizhong    时间: 2021-3-8 17:31
hrb011011 发表于 2021-3-8 16:49
是否可以参考下面这种写法(可行有bug会修改原文),可以定义码表变量,变形的目的就是不想公开自己的码 ...

提供码表和解码表就行,别的不需要
ok?
作者: 元老    时间: 2021-3-8 17:37
红色标题怎么整的?
作者: taizhong    时间: 2021-3-8 22:38
创世之神 发表于 2021-3-8 17:37
红色标题怎么整的?

道具变色卡
作者: mmlai8    时间: 2021-3-9 05:53
编猛啊,有些东西易语言做不到那么好
作者: xxdahai    时间: 2021-3-9 09:11
赞!很快,尤其解码,吊打精易模块,另外多线程支持不啊
作者: yoobaby    时间: 2021-3-9 13:03
汇编学习下。。。。
作者: taizhong    时间: 2021-3-9 15:03
xxdahai 发表于 2021-3-9 09:11
赞!很快,尤其解码,吊打精易模块,另外多线程支持不啊

你试试呗
作者: mood1000    时间: 2021-3-9 20:53
确实很快,感谢分享
作者: 7ian    时间: 2021-3-9 23:46
应该写个字节集编码解码的,这都是文本
作者: yoobaby    时间: 2021-3-10 00:13
楼主试看看8个字符长度的,编码看看是不是编码后的文本后面会有两个空格,这是正常吗?
作者: taizhong    时间: 2021-3-10 08:34
yoobaby 发表于 2021-3-10 00:13
楼主试看看8个字符长度的,编码看看是不是编码后的文本后面会有两个空格,这是正常吗? ...

长度计算错误了,,自己可以改改
作者: taizhong    时间: 2021-3-10 08:36
taizhong 发表于 2021-3-10 08:34
长度计算错误了,,自己可以改改

.版本 2
.支持库 spec

.子程序 base64_encode, 文本型
.参数 string, 文本型
.局部变量 b, 文本型
.局部变量 a, 整数型
.局部变量 len, 整数型

a = 取文本长度 (string)
' 提前申请空白内存,用来存放编码后的内容,计算编码后的长度
.如果 (a % 3 = 0)
    len = 到整数 (a ÷ 3) × 4
.否则
    len = (到整数 (a ÷ 3) + 1) × 4
.如果结束

b = 取空白文本 (len)
base64_encode0 (取变量数据地址 (string), a, 取变量数据地址 (b), len)
返回 (b)

作者: 布鲁惠斯    时间: 2021-3-11 22:05
支持开源~!感谢分享
作者: taizhong    时间: 2021-3-11 22:34
7ian 发表于 2021-3-9 23:46
应该写个字节集编码解码的,这都是文本

有我的源码
改成字节集还不是有手就行?

作者: ooopwq    时间: 2021-3-12 22:19
也太历害了,感觉今天看了又让我学会了新的知识,感谢分享!
作者: shinid8210    时间: 2021-3-13 19:01
taizhong 发表于 2021-3-10 08:36
.版本 2
.支持库 spec

按照楼主的改了 到整数 ,编码的还是有差异


作者: taizhong    时间: 2021-3-13 22:10
shinid8210 发表于 2021-3-13 19:01
按照楼主的改了 到整数 ,编码的还是有差异

"测试编码" 改成UTF8 编码,就一样了
作者: shinid8210    时间: 2021-3-14 13:23
taizhong 发表于 2021-3-13 22:10
"测试编码" 改成UTF8 编码,就一样了

谢谢                           
作者: kantal    时间: 2021-3-18 14:36
也太历害了,感觉今天看了又让我学会了新的知识,感谢分享!~

作者: 谁用这名    时间: 2021-3-24 09:54
感觉是个好东西,精易模块的 base64  好慢啊200k图片解码 半天卡死了 成功几率不到30  代码在网页上都好好的 ,这下下载来试试看
作者: coolfire1983    时间: 2021-3-24 10:01
感谢楼主分享   速度快的好啊
作者: a657938016    时间: 2021-3-25 18:02
支持开源   
作者: inh荒岛    时间: 2021-3-25 18:35
感谢楼主开源精易有你更精彩!
作者: liedou    时间: 2021-3-25 19:37
支持开源~!感谢分享
作者: liedou    时间: 2021-3-25 19:51
支持开源~!感谢分享
作者: liedou    时间: 2021-3-25 20:06
支持开源~!感谢分享
作者: smk718    时间: 2021-3-26 13:48
学会了新的知识,感谢分享!~
作者: 风清云游    时间: 2021-3-26 14:51
学习一下  支持一个
作者: 大飞超人    时间: 2021-3-26 16:24

作者: zsjjh1    时间: 2021-3-27 01:56
不能转字节集?
作者: taizhong    时间: 2021-3-27 03:26
zsjjh1 发表于 2021-3-27 01:56
不能转字节集?

,能啊
作者: wxy99    时间: 2021-3-27 20:54
完整版,置入汇编base64编码和解
作者: wxy99    时间: 2021-3-27 22:03
#在这里快速回复#字节集还不是有手就行?
作者: zsjjh1    时间: 2021-3-28 10:40
还是没弄明白图片的base64怎么编解
作者: zsjjh1    时间: 2021-3-28 10:40
还是没弄明白图片的base64怎么编解
作者: zhouzheng398    时间: 2021-3-29 14:21
用100kb的图片base64 依然解不出来图片字节集
作者: taizhong    时间: 2021-3-30 12:31
zhouzheng398 发表于 2021-3-29 14:21
用100kb的图片base64 依然解不出来图片字节集

发我邮箱,我试试
作者: zhouzheng398    时间: 2021-3-30 12:56
taizhong 发表于 2021-3-30 12:31
发我邮箱,我试试

附件看能否收到

temp.jpg (170.06 KB, 下载次数: 7)

temp.jpg

作者: taizhong    时间: 2021-3-30 14:45
zhouzheng398 发表于 2021-3-30 12:56
附件看能否收到

测试过了,没问题啊
文本和字节集之间,你自己转化下

作者: taizhong    时间: 2021-3-30 14:47
本帖最后由 taizhong 于 2021-3-30 14:49 编辑
zhouzheng398 发表于 2021-3-30 12:56
附件看能否收到

16ms 加密解密完成,有问题?


作者: zhouzheng398    时间: 2021-3-31 13:01
taizhong 发表于 2021-3-30 14:47
16ms 加密解密完成,有问题?

是字节集转文本问题,用到文本()或者精益模块字节集_到文本,图片转换过来后文本长度只有4位,base64编码也只有“/9j/4A==”一点
作者: taizhong    时间: 2021-3-31 13:38
zhouzheng398 发表于 2021-3-31 13:01
是字节集转文本问题,用到文本()或者精益模块字节集_到文本,图片转换过来后文本长度只有4位,base64编码 ...


自己要改写个base64,参数是字节集
作者: zhouzheng398    时间: 2021-3-31 13:56
taizhong 发表于 2021-3-31 13:38
自己要改写个base64,参数是字节集

能否给个实例,非常感谢哈
作者: taizhong    时间: 2021-3-31 14:14
zhouzheng398 发表于 2021-3-31 13:56
能否给个实例,非常感谢哈


解码图片,返回字节集
==========
.版本 2
.支持库 spec

.子程序 base64_decode_b, 字节集
.参数 string, 文本型
.局部变量 str_len, 整数型
.局部变量 len, 整数型
.局部变量 out, 字节集

' 计算解码后的长度
len = 取文本长度 (string)
.如果 (寻找文本 (string, “==”, , 假) ≠ -1)
    str_len = 到整数 (len ÷ 4) × 3 - 2
.否则
    .如果 (寻找文本 (string, “=”, , 假) ≠ -1)
        str_len = 到整数 (len ÷ 4) × 3 - 1
    .否则
        str_len = 到整数 (len ÷ 4) × 3
    .如果结束

.如果结束


out = 取空白字节集 (str_len)

base64_decode0 (取变量数据地址 (string), len, 取变量数据地址 (out), str_len)
返回 (out)





作者: taizhong    时间: 2021-3-31 14:15
zhouzheng398 发表于 2021-3-31 13:56
能否给个实例,非常感谢哈

说错了,返回值类型是字节集
作者: zhouzheng398    时间: 2021-3-31 15:04
taizhong 发表于 2021-3-31 14:15
说错了,返回值类型是字节集

厉害了,果然是非常非常快。解决大问题了,看论坛不少人都有这个问题
作者: taizhong    时间: 2021-4-20 18:43
zhouzheng398 发表于 2021-3-31 15:04
厉害了,果然是非常非常快。解决大问题了,看论坛不少人都有这个问题 ...

,还行吧
作者: xmm    时间: 2021-4-25 20:18
taizhong 发表于 2021-3-30 14:45
测试过了,没问题啊
文本和字节集之间,你自己转化下

谢谢大佬分享源码
作者: wuyueqi520    时间: 2021-4-26 14:20
感谢分享,刚好需要
作者: 易友2013    时间: 2021-4-26 15:21
多线程里面,程勋内存越来越大。。。哪里没有释放啊,大佬
作者: wuyueqi520    时间: 2021-4-26 15:27
taizhong 发表于 2021-3-30 14:45
测试过了,没问题啊
文本和字节集之间,你自己转化下

小白,怎么把文本转成字节集, 直接用到字节集(文本)命令,不对
作者: wuyueqi520    时间: 2021-4-26 15:56
刚看了下回复区,转成字节集了,但是速度还是很慢,用base64 生成一个照片保存到桌面,1寸的照片,60几KB ,要8秒左右,和精易模块差不多
作者: wuyueqi520    时间: 2021-4-26 15:58
wuyueqi520 发表于 2021-4-26 15:56
刚看了下回复区,转成字节集了,但是速度还是很慢,用base64 生成一个照片保存到桌面,1寸的照片,60几KB  ...

不好意思,我加了个调试输出 字节集记录,导致慢了几秒,去掉调试输出,大概1到2秒的响应
作者: taizhong    时间: 2021-4-26 20:12
wuyueqi520 发表于 2021-4-26 15:56
刚看了下回复区,转成字节集了,但是速度还是很慢,用base64 生成一个照片保存到桌面,1寸的照片,60几KB  ...

不可能吧,,,
作者: taizhong    时间: 2021-4-26 20:17
wuyueqi520 发表于 2021-4-26 15:56
刚看了下回复区,转成字节集了,但是速度还是很慢,用base64 生成一个照片保存到桌面,1寸的照片,60几KB  ...

刚才测试了下一张图片139kb,编码+解码总共耗时16ms

作者: taizhong    时间: 2021-4-26 20:29
完整版+测试程序
别乱喷速度没精易模块快
自己测试
置入汇编base64编码和解码完整版_修复.e (158.85 KB, 下载次数: 340)


作者: a3960382663    时间: 2021-4-28 21:03
自己测试
作者: wjswzj0    时间: 2021-4-29 10:00
感谢分享,刚好需要

作者: wuyueqi520    时间: 2021-4-29 12:40
https://lanzoux.com/iz3feome6pg  链接同附件--
求大神解答,用了楼主这个,用易语言直接调试没问题,但编译出来后再转换,我的图片报错,楼主的图片没有问题。 我的图片到在线网址上也是可以转成图片的。附上附件了,1是楼主的图,2.txt是我的测试图

test.rar

866.05 KB, 下载次数: 6, 下载积分: 精币 -2 枚


作者: wuyueqi520    时间: 2021-4-29 12:47
@taizhong 大神 求解求解,,,,
https://lanzoux.com/iz3feome6pg 源码以及附件都在这里,代码应该没问题,不知道文件问题在哪
我的那张,要买闪退,要么提示内存问题,分配字节内存失败
是文档编码的问题吗,我复制出来,重新新建也一样,真搞不懂

333.jpg (12.03 KB, 下载次数: 7)

333.jpg

作者: taizhong    时间: 2021-4-29 21:07
wuyueqi520 发表于 2021-4-29 12:47
@taizhong 大神 求解求解,,,,
https://lanzoux.com/iz3feome6pg 源码以及附件都在这里,代码应该没 ...

源码都有了,问题自己找
实在不行,就别用

作者: mgfz    时间: 2021-4-30 17:01
现在精易模块还没有收录吗?把楼主这个优化的添加进去。
作者: wuyueqi520    时间: 2021-5-2 14:59
taizhong 发表于 2021-4-29 21:07
源码都有了,问题自己找
实在不行,就别用

用精益模块的没问题,用你这个命令有问题,会不会是长度计算有问题。如果没空就算了,我先用精益模块了,效率慢一点,但是稳定
作者: wuyueqi520    时间: 2021-5-2 15:23
找到原因了, 如果有两个=号的长度,命令就有问题,改了这里就不奔溃了,  难怪有的照片可以,有的不行。

1.jpg (38.17 KB, 下载次数: 8)

1.jpg

作者: taizhong    时间: 2021-5-7 09:15
wuyueqi520 发表于 2021-5-2 15:23
找到原因了, 如果有两个=号的长度,命令就有问题,改了这里就不奔溃了,  难怪有的照片可以,有的不行。 ...

原数据的末尾的==或者=去掉 也可以得到正确结果,=用来占位
作者: hjwhjy    时间: 2021-6-20 08:23
历害历害历害历害历害历害
作者: dengerlong    时间: 2021-6-27 13:24
学习啊啊啊啊啊啊啊
作者: 3382803166    时间: 2021-11-12 12:48
base64_encode编码部分要改成到整数 (a ÷ 3),否则长度计算有误差
作者: ghost12    时间: 2022-3-1 12:01
感谢发布原创作品,精易因你更精彩!
作者: ghost12    时间: 2022-3-9 11:00
不明真相的吃瓜群众路过~\赶紧买个瓜围观
作者: 千年ID    时间: 2022-3-16 12:54
转字节集还不是有手就行?
作者: 千年ID    时间: 2022-3-16 12:55
转字节集还不是有手就行?
作者: sun2258    时间: 2022-4-9 16:51
学习一下。谢分享
作者: Code123    时间: 2022-5-11 08:58
谢谢。正好要。。。
作者: 凌lingy    时间: 2022-6-18 23:03
666666666666666666666666
作者: li5553385    时间: 2023-1-19 23:57
支持下!!!!!!!!!!
作者: zdqzdqzdq    时间: 2023-2-8 01:40
正需要呢。谢谢。
作者: zdqzdqzdq    时间: 2023-2-8 01:41
下载错了。郁闷。
作者: 大大大路    时间: 2023-2-12 15:52
谢谢。正好要。。。
作者: QQEat    时间: 2023-3-16 22:47
taizhong 发表于 2021-4-26 20:17
刚才测试了下一张图片139kb,编码+解码总共耗时16ms

139kb 16ms,CryptStringToBinaryA 1000KB 16ms,这是怎么做到汇编比API还慢的




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4