标题: [已解决] 如何利用系统日期字符串的CRC值对程序运行加密? [打印本页]
作者: t720 时间: 2009-9-21 14:05 标题: [已解决] 如何利用系统日期字符串的CRC值对程序运行加密?
小弟不才,有困难实在是解决不了,具体情况如下:
构思:
利用系统当前日期(如20090921)这几个字符的CRC32值作为程序运行的密码,不知道如何实现。
我自己想的流程如下:
利用 DATE 生成当前日期字符
|
利用命令行下的CRC计算工具生成CRC值
|
把CRC值赋作为GOTO的目标
|
利用
SET
SET /P
要求用户输入CRC值,输入正确就跳转到GOTO处执行,不正确就退出。
小弟才疏学浅,还望各位大侠高手指点,先谢过了!
[ 本帖最后由 t720 于 2009-9-26 22:25 编辑 ]
作者: Batcher 时间: 2009-9-21 15:11
具体哪一步不会?还是所有的步骤都不会?
作者: t720 时间: 2009-9-21 15:29
谢谢管理员回复!实话实说,基本上大部分都不会。
特别是变量的调用上,只会写简单的。刚试了一下就发现问题了,我是用的XPSP3,DATE返回的是2009-9-21星期一,而别的系统上返回的格式都可能不一样,晕了~~
新手菜鸟,希望大家不要见笑。
[ 本帖最后由 t720 于 2009-9-21 15:36 编辑 ]
作者: t720 时间: 2009-9-22 11:54
说白了就是想要一段通过日期的CRC值作为运行密码的代码,希望高手指教!先说声谢谢了!
作者: t720 时间: 2009-9-23 17:54
有请各位高手出手相助,不甚感激!!!
作者: Batcher 时间: 2009-9-23 20:29
你用的哪个CRC计算工具?请提供一个下载,我帮你写代码。
作者: t720 时间: 2009-9-25 16:06
太感谢管理大大了,我找了一个命令行下对文件进行验证的工具(直接对字符串进行计算的没找到),太感谢了!
下载地址:
http://www.rayfile.com/files/3ae ... -8fe7-0014221b798a/
作者: Batcher 时间: 2009-9-25 16:17 标题: 回复 7楼 的帖子
对文件进行CRC校验的命令行工具我这里有几个,暂时没有找到适用于字符串的工具。
把日期信息输出到文件,再根据此文件的CRC做加密,这样能满足你的要求吗?
作者: t720 时间: 2009-9-25 16:22
绝对可以!只是在计算的时候最好不要把计算结果生成文件,不然被别人暂停查看就起不了加密作用了。
再次感谢!
作者: Batcher 时间: 2009-9-26 09:44
- @echo off
- rem 假设系统日期格式为yyyy-mm-dd
- rem 使用第三方命令行工具crc32sum.exe来计算文件的CRC
- set date=2009-09-26
- >"%temp%\today.dat" echo/%date%
- for /f "tokens=1 delims= " %%a in ('crc32sum.exe "%temp%\today.dat"') do (
- set "CRC=%%a"
- )
- set /p input=请输出密码:
- if "%input%" equ "%CRC%" (
- goto :RightPassword
- ) else (
- goto :WrongPassword
- )
- goto :eof
-
- :RightPassword
- echo Welcome to bbs.bathome.net!
- pause
- goto :eof
-
- :WrongPassword
- echo You are not authorised to use this application!
- pause
- goto :eof
复制代码
作者: t720 时间: 2009-9-26 17:05
多谢老大费心,实在是太感谢了!
有几处不解还请指点:
1、如果我要直接调用系统时间,能否直接去掉
set date=2009-09-26
这一句?
2、因为系统版本及语言的不同,可能会有YYYY-MM-DD、MM-DD-YYYY等格式,是否有办法统一为一个格式?
[ 本帖最后由 t720 于 2009-9-26 17:08 编辑 ]
作者: Seter 时间: 2009-9-26 17:13
我觉得反正要用第三方..不如直接用这个第三方取日期+计算CRC,这样可以省很多力气...
作者: Seter 时间: 2009-9-26 17:18
- set d=%date:~0,10%
- if "%d:~2,1%"=="-" set d=%d:~-4%-%d:~0,-5%
- >"%temp%\today.dat" echo/%d%
复制代码
作者: Batcher 时间: 2009-9-26 20:07 标题: 回复 11楼 的帖子
1、可以。我写这句就是为了在自己的英文系统里面做测试,你可以 把它删掉。
2、参考:批处理标准化获取当前系统日期
http://bbs.bathome.net/thread-3328-1-1.html
作者: Seter 时间: 2009-9-26 21:43
先改注册表来取得同样的格式日期...这个恶心...
作者: t720 时间: 2009-9-26 22:18
标准化日期感觉还是DEBUG方案比较好,对系统也没什么修改。不过有个问题,使用DEBUG方案后,批处理中的中文字符就乱码了,不知道是不是setlocal命令的原因。
DEBUG方法原文如下:
@echo off & setlocal
for /f "tokens=6,8 delims== " %%a in ('^(echo a100^&echo mov ah^,2a^&echo int 21^&echo.^&echo p 2^&echo q^)^|debug^|find "CX"') do set /a y=0x%%a&set md=%%b
set /a m=0x%md:~,2%,d=0x%md:~-2%
set m=0%m%&set d=0%d%
echo %y%-%m:~-2%-%d:~-2%
pause
在此谢谢各位热心的高手们,特别是管理员大大,这里氛围真的很好,对像我这样的新手太有帮助了。
这两天正在仔细学习教程贴,比其他地方的教程和书籍好多了。
完全可以整理成一本书了:)
[ 本帖最后由 t720 于 2009-9-26 22:56 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |