Board logo

标题: [加密解密] 批处理版Base64编码工具 [打印本页]

作者: 老刘1号    时间: 2017-4-16 10:15     标题: 批处理版Base64编码工具

本帖最后由 老刘1号 于 2021-3-3 21:21 编辑

关联贴:http://www.bathome.net/thread-587-1-1.html
Base64科普:http://baike.baidu.com/link?url=FGO-UZ6dxJoM00BCoq6uTIDJtr2XTQMqCPZVkZMHNRDgM_PzVusq8e7mzBxxtRETKLolYatizD_9G1W9MSDBPa
用法:
Batname <文件路径 或 字符串>
借助外部命令FC,Fsutil,Findstr
已知BUG:受批处理机制影响,当外参为字符串时,英文感叹号和英文双引号会被丢弃。
请将其写入文本文件并将文件路径传参
支持任何文件编码,无视特殊符号



————————————————
%Code BY 老刘%
%转载请注明批处理之家及作者昵称%

@ ECHO off & PUSHD %tmp%
SETlocal ENABLEDELAYEDEXPANSION
SET rand=!ranDOm!

IF not exist "%~1" (
        SET/P"=%~1"<nul >$_!rand!
        SET FilePATh=$_!rand!
) ELSE SET "FilePATh=%~1"

DEL /F $_!rand!_ 2>nul
FOR %%a IN ("!FilePATh!") DO ^
Fsutil file creATenew $_!rand!_ %%~za >nul

SET Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

SET /A Counter=0
DEL /F $_!rand!_$ 2>nul
(FOR /F "Tokens=2" %%. IN (
        'Fc /b "!FilePath!" $_!rand!_ ^| Findstr /R /C:"[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]: [0-9A-F][0-9A-F] 00"'
) DO (
        SET /A Counter+=1
        SET/P"=%%. "
        IF !Counter! EQU 3 (
                SET /A Counter=0
                ECHO.
        )
))<nul >$_!rand!_$
DEL /F $_!rand! $_!rand!_ 2>nul

SET Endstr=
(FOR /F "Tokens=1-3" %%A IN ($_!rand!_$) DO (
        IF "%%C" EQU "" (
                IF "%%B" EQU "" (
                        SET /A "Bse1=0x%%A>>2,Bse2=(0x%%A&0x3)<<4,Bse3=Bse4=64"
                ) ELSE SET /A "Bse1=0x%%A>>2,Bse2=((0x%%A&0x3)<<4)|(0x%%B>>4),Bse3=(0x%%B&0xf)<<2,Bse4=64"
        ) ELSE SET /A "Bse1=0x%%A>>2,Bse2=((0x%%A&0x3)<<4)|(0x%%B>>4),Bse3=((0x%%B&0xf)<<2)|(0x%%C>>6),Bse4=0x%%C&0x3f"
        FOR /L %%. IN (1 1 4) DO FOR %%' IN (!Bse%%.!) DO (
                IF "!Alphabet:~%%',1!" EQU "=" (
                        SET "Endstr=!Endstr!="
                ) ELSE SET/P"=!Alphabet:~%%',1!"
        )
))<nul
ECHO.%Endstr%
DEL /F $_!rand!_$ 2>nul

作者: 老刘1号    时间: 2017-4-16 20:38

解码方法:
Win7及以上——
  1. Batname <FilePath|String> >BseCode.txt %编码%
  2. certutil -decode BseCode.txt Decode.txt %调用系统自带外部程序解码%
  3. Start Decode.txt %打开解码后的文件%
复制代码
或使用Happy兄的Bse来解码:http://www.bathome.net/thread-42150-1-1.html
  1. Batname <FilePath|String> >BseCode.txt %编码%
  2. Bse.exe -d BseCode.txt Decode.txt %调用Bse第三方解码%
  3. Start Decode.txt %打开解码后的文件%
复制代码

作者: happy886rr    时间: 2017-4-16 21:12

回复 2# 老刘1号
位运算,溜到家了。
作者: 老刘1号    时间: 2017-4-23 10:19

回复 3# happy886rr


    学汇编之后才发现批的位运算如此好用……
作者: happy886rr    时间: 2017-4-23 10:30

回复 4# 老刘1号
你应该用汇编写一个base编码器,那才有速度。
作者: 老刘1号    时间: 2017-4-23 10:33

回复 5# happy886rr


    汇编还没学到终端和端口……
现在处于尴尬境地,
处理一个数据需要知道长度,
处理完还需要用DEBUG显示……
……赶快往深学了
作者: happy886rr    时间: 2017-6-1 19:45

回复 6# 老刘1号
彩色的非常养眼,厉害,这代码效果很赞。
作者: xtwwz    时间: 2021-3-3 17:31

好强大功能,这算法移植的真不错。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2