中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 21:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何把密码加密存放,供批处理运行时调用? 查看 3,587 回复 11
楼 主 如何把密码加密存放,供批处理运行时调用? 发表于 2011-01-10 23:57 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
UID 98650
性别 男
状态 离线
如何把密码加密存放,供批处理运行时调用?

[ Last edited by uiopuiop on 2011-1-10 at 23:58 ]
2 发表于 2011-01-11 00:35 ·  中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
密码的规则是什么?纯数字?数字加字母?还是常用字符?
加密的算法要求是什么?
存放的位置指定在哪?注册表还是文件?
3 发表于 2011-01-11 01:13 ·  中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
写了个简单的,密码要求为纯数字,保存在注册表:
@echo off&setlocal enabledelayedexpansion
set x0=!random!!random!!random!!random!!random!&echo !x0!原始
set r=hkcu\Software\hanye


:x1:加密算法
if not "!x0:~%n%,1!"=="" set/a a=!x0:~%n%,1!+!n:~-1!,n+=1&set x1=!x1!!a:~-1!&goto:x1
echo %x1%加密
reg add %r% /ve /d %x1% /f>nul


for /f "tokens=3 delims=这里是制符" %%a in ('reg query %r% /ve') do set x3=%%a
:x2:解密算法
if not "!x3:~%m%,1!"=="" set/a a=1!x3:~%m%,1!-!m:~-1!,m+=1&set x2=!x2!!a:~-1!&goto:x2
echo %x2%解密


pause
reg delete %r% /f>nul


[ Last edited by Hanyeguxing on 2011-1-11 at 01:54 ]
4 发表于 2011-01-11 19:27 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
UID 98650
性别 男
状态 离线
Originally posted by Hanyeguxing at 2011-1-11 12:35 AM:
密码的规则是什么?纯数字?数字加字母?还是常用字符?
加密的算法要求是什么?
存放的位置指定在哪?注册表还是文件?


re: 密码的规则是什么?- 字母数字的混合(当然如果能带特殊符号更好)
re: 加密的算法要求是什么? - 一般不容易破解即可,当然如果能用高级点的加密更好(MD5, dsa, rsa, etc.)

re; 存放的位置指定在哪?最好能存放在一个文件里。

批处理可以调用第三方命令行工具。

PS. 是否能解释一下三楼代码的加密原理,谢谢!
5 发表于 2011-01-12 13:43 ·  中国 北京 263网络通信电信数据中心
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
加再多,把if取消……


写的bat的代码,大部分核心操作都要依赖与密码

然后把密码加密MD5在bat里面比较下。如果对了执行。。。

这样看到你的bat源码,如果不比较,随便的password是不行的。


set password=
if md5(password)=fde3494783dfd854

操作的核心部分都要和%passord%有关,中间的某个字符啊,某个
字符再运算变形啊。。。

这个没有正确的password跳过判断下来执行也是不能工作的才可以。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
6 发表于 2011-01-12 23:37 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
UID 98650
性别 男
状态 离线
Originally posted by slore at 2011-1-12 01:43 PM:
加再多,把if取消……


写的bat的代码,大部分核心操作都要依赖与密码

然后把密码加密MD5在bat里面比较下。如果对了执行。。。

这样看到你的 ...


一般自动化脚本都是自动运行的,不会有人工干预,所以不能人工输入密码。
你MD5加密后,如何解密呢?密码在批处理运行时又必须是明文的,运行时候肯定要解密后在穿给相应的命令的,MD5没法认啊。
7 发表于 2011-01-12 23:53 ·  中国 广东 深圳 电信
新手上路
积分 5
发帖 9
注册 2008-08-28 10:30
UID 124367
性别 男
状态 离线
厉害 我菜鸟 所以 只有看的分
8 发表于 2011-01-13 09:54 ·  中国 北京 263网络通信电信数据中心
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
Originally posted by uiopuiop at 2011-1-12 23:37:


一般自动化脚本都是自动运行的,不会有人工干预,所以不能人工输入密码。
你MD5加密后,如何解密呢?密码在批处理运行时又必须是明文的,运行时候肯定要解密后在穿给相应的命令的,MD5没法认啊。



你要无人干预就不要设置密码。。。。


我这里明文是用set /p pw=

让人输入的,然后md5计算下,和md5相比较。。。能过下面的操作和你输入的密码相关系,所以错误的密码是不能用的。


如果你单纯的密码设置了,而只是自动读取?自动判断。。。
把判断注掉了,你有什么加密可言?
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
9 发表于 2011-01-13 21:34 ·  中国 广东 东莞 中移铁通
初级用户
★★
积分 115
发帖 92
注册 2010-12-24 16:57
UID 179794
性别 男
状态 离线
我是很菜的,代码不太懂。但看得出slore的思维比较严谨。
10 发表于 2011-01-16 19:50 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
UID 98650
性别 男
状态 离线
大家有么有什么新的思路?
11 发表于 2011-01-18 12:18 ·  中国 上海 东方有线
初级用户
积分 28
发帖 23
注册 2010-11-26 11:37
UID 178303
性别 男
状态 离线
简单,替换文字就行了,例如把“1”替换成“X”让人看不懂,调用时再把他换回来。
12 发表于 2017-08-26 21:48 ·  中国 湖北 武汉 电信
新手上路
积分 8
发帖 8
注册 2017-08-21 22:22
UID 182480
性别 男
状态 离线
1、用C编个最简单的int main(int argc, char * argv[]) 程序, char * argv[]就是第一个参数,程序会对第一个参数进行检查(就是密码),如果成功返回T,失败返回F。
2、在批处理中做一个SE /P PWD=要求输入密码,再将输入值传给第一步的程序,进行参数即密码,进行判断。
3、批处理根据%errorlevel%返回值T/F判断输入的密码是否正确,正确处理下一步,不正确提示再次输入。
4、这样密码保存在c编译好的exe文件中,一般是看不到的,除非破解。
论坛跳转: