编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
 
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
 19 12
发新话题
打印

[原创]奉献一个加密/解密程序

[原创]奉献一个加密/解密程序

**************************************************
* 一种加密和解密算法 JM.PRG (C)Copyright 2006-2006
* 加密: ?JM("文件名.DBF",88) &&返回.T.为成功
* 解密: ?JM("文件名.DBF",-88) &&返回.T.为成功
* 作者: Tiger5392
* 时间: 2006.06.11
**************************************************
PARAMETERS cFileName,nNumber
PRIVATE cFileName,nNumber,A,B,D
nHandle=FOPEN(cFileName,2)
IF nHandle<>-1
DIMENSION D(1)
ADIR(D,cFileName)
FOR I=1 TO D(1,2)
A=FREAD(nHandle,1)
B=CHR(MOD(ASC(a)+nNumber,256))
FSEEK(nHandle,I)
FWRITE(nHandle,B)
ENDFOR
FCLOSE(nHandle)
RETURN .T.
ELSE
RETURN .F.
ENDIF

TOP

TOP

修改后的更加可靠的加密/解密程序
**************************************************
* 一种加密和解密算法 JM.PRG (C)Copyright 2006-2006
* 加密: ?JM("文件名.DBF",88) &&返回0为成功
* 解密: ?JM("文件名.DBF",-88) &&返回0为成功
* 作者: Tiger5392
* 时间:
* 建立时间 2006.06.11
* 第1次修改时间 2006.06.11
**************************************************
PARAMETERS cFileName,nNumber
PRIVATE cFileName,nNumber,A,B,D
*判断参数的数量是否为2
IF PARAMETERS()<>2
RETURN 1 &&参数数目错
ENDIF
*判断参数的类型是否分别为C和N
IF TYPE("cFileName")<>CHR(67) OR TYPE("nNumber")<>CHR(78)
RETURN 2 &&参数类型错
ENDIF
*判断是否能打开文件进行读写
nHandle=FOPEN(cFileName,2)
IF nHandle=-1
RETURN 3 &&文件打不开或不能写入数据
ENDIF
*加密或解密,成功的话返回0
DIMENSION D(1)
ADIR(D,cFileName)
FOR I=1 TO D(1,2)
A=FREAD(nHandle,1)
B=CHR(MOD(ASC(a)+nNumber,256))
FSEEK(nHandle,I)
FWRITE(nHandle,B)
ENDFOR
FCLOSE(nHandle)
RETURN 0 &&成功
* EOF():JM.PRG (C)Copyright 2006-2006 Tiger5392

[此贴子已经被作者于2006-6-11 22:55:00编辑过]

感言:学以致用。 博客:http://www.bc-cn.net/blog/user14/65009/index.shtml email:Tiger5392@tom.com

TOP

顶!
冰蝴蝶的心愿,就是变成纤纤蝴蝶,即使那样只有七天的生命。

TOP

再修改后的加密/解密程序
**************************************************
* 一种加密和解密算法 JM.PRG (C)Copyright 2006-2006
* 加密: ?JM("文件名.DBF",88) &&返回0为成功
* 解密: ?JM("文件名.DBF",-88) &&返回0为成功
* 作者: Tiger5392
* 时间:
* 建立时间 2006.06.11
* 第1次修改时间 2006.06.11
* 第2次修改时间 2006.06.16
***********************************
PARAMETERS cFileName,nNumber
PRIVATE cFileName,nNumber,A,B,D
*判断参数的数量是否为2
IF PARAMETERS()<>2
RETURN 1 &&参数数目错
ENDIF
*判断参数的类型是否分别为C和N
IF TYPE("cFileName")<>CHR(67) OR TYPE("nNumber")<>CHR(78)
RETURN 2 &&参数类型错
ENDIF
*判断密钥是否有效
IF nNumber=0 &&2006.06.16修改
ETURN 4 &&密钥为0属无效密钥
ENDIF
*判断是否能打开文件进行读写
nHandle=FOPEN(cFileName,2)
IF nHandle=-1
RETURN 3 &&文件打不开或不能写入数据
ENDIF
*加密或解密,成功的话返回0
DIMENSION D(1)
ADIR(D,cFileName)
FOR I=1 TO D(1,2)
A=FREAD(nHandle,1)
B=CHR(MOD(ASC(a)+nNumber,256))
FSEEK(nHandle,I)
FWRITE(nHandle,B)
ENDFOR
FCLOSE(nHandle)
RETURN 0 &&成功
* EOF():JM.PRG (C)Copyright 2006-2006 Tiger5392
感言:学以致用。 博客:http://www.bc-cn.net/blog/user14/65009/index.shtml email:Tiger5392@tom.com

TOP

还有没有得改呀,我可要复制下去啦
不要为了打发无聊而做无聊的事!不要在虚幻的世界里做虚幻的事!

TOP

你先复制下去,以后改了再说
看得出来,这个是用十分简单的方法加密的
感言:学以致用。 博客:http://www.bc-cn.net/blog/user14/65009/index.shtml email:Tiger5392@tom.com

TOP

我有这样一个想法:就是把表的内容存进一个内存文件,每次要用的时候调出来,修改表内容后再存回去,这样的话可以用代码在需用的时侯建一个空表,或干脆就保留一个空表。这样子就不怕表结构在特殊情况下被破坏,到时也就不用修复表了。
不知道这样有没有实用性。
不要为了打发无聊而做无聊的事!不要在虚幻的世界里做虚幻的事!

TOP

如果能存进去的话,那么对这个内存文件再加密会不会更好一点呢

不要为了打发无聊而做无聊的事!不要在虚幻的世界里做虚幻的事!

TOP

顶给Tiger兄弟
不要为了打发无聊而做无聊的事!不要在虚幻的世界里做虚幻的事!

TOP

 19 12
发新话题