Board logo

标题: [已解决] 如何利用系统日期字符串的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

  1. @echo off
  2. rem 假设系统日期格式为yyyy-mm-dd
  3. rem 使用第三方命令行工具crc32sum.exe来计算文件的CRC
  4. set date=2009-09-26
  5. >"%temp%\today.dat" echo/%date%
  6. for /f "tokens=1 delims= " %%a in ('crc32sum.exe "%temp%\today.dat"') do (
  7.   set "CRC=%%a"
  8. )
  9. set /p input=请输出密码:
  10. if "%input%" equ "%CRC%" (
  11.   goto :RightPassword
  12. ) else (
  13.   goto :WrongPassword
  14. )
  15. goto :eof
  16. :RightPassword
  17. echo Welcome to bbs.bathome.net!
  18. pause
  19. goto :eof
  20. :WrongPassword
  21. echo You are not authorised to use this application!
  22. pause
  23. 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

  1. set d=%date:~0,10%
  2. if "%d:~2,1%"=="-" set d=%d:~-4%-%d:~0,-5%
  3. >"%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://bathome.net./) Powered by Discuz! 7.2