注册 登录
编程论坛 VFP论坛

求教 vfp 能批量给文件加密处理不?

lnsyzhuhua 发布于 2023-04-17 10:28, 323 次点击
只有本站会员才能查看附件,请 登录
11 回复
#2
吹水佬2023-04-17 11:53
两个问题
1、批量文件,枚举文件名
2、加密文件,加解密算法
#3
sdta2023-04-17 12:10
试试STRCONV()
#4
my23182023-04-17 16:14
能,一定能
#5
iswith2023-04-17 19:09
批量给文件加密处理,那你需要学习的知识蛮广的!因为每一种类型的文件格式都有自己PE头+格式!你需要知道你所关注的文件类型格式,如果这个文件类型是所有,那你就要知道IDE是怎么编程来的,也就是编程的天花板了。。。。,如果是特定一些常用的文件类型(比如:excel,word,txt,dbf,pdf,这类文件网上找找格式说明很多。。。在应该的地方随便加点什么就可视为加密。。。。,再或者试试全部转成二进制你加个算法把进制破坏+还原,文件名=  任意名称+原文件扩展名+加密关键字.vfp加密,进制破坏拿不到你算法还原再NB还解密不了!有些公开的加密算法你需要在其它语言引用到VFP来,有对称的和非对称.

[此贴子已经被作者于2023-4-17 19:19编辑过]

#6
xuminxz2023-04-18 07:50
回复 楼主 lnsyzhuhua
意思就是把文件压缩为有密码的RAR文件吧,这个完全可以做的。
#7
pvm20002023-04-18 08:17
[quote]以下是引用xuminxz在2023-4-18 07:50:37的发言:

意思就是把文件压缩为有密码的RAR文件吧,这个完全可以做的。[/quote文件压缩为有密码的RAR文件吧,这个完全可以做的。


批量将文件压缩为有密码的RAR文件,这个简单
#8
lnsyzhuhua2023-04-18 08:43
安装的解压缩文件软件为 winrar 5.71
手工添加密码:
鼠标右键点选需要压缩的dbf文件,选 添加到压缩文件,选 设置密码,输入密码,确定,确定 。就生成带密码的压缩文件了。
vfp单独生成压缩文件,不设密码,下面语句可行:
cdlmc=Left(Sys(16),Rat('\',Sys(16)))+'帮助'
RUN /N7 "C:\Program Files\WinRAR\WinRAR.exe"  a -ibck -ep1 -r -k -o+ -y &cdlmc &cdlmc\*.*
#9
hu9jj2023-04-18 09:08
以下是引用iswith在2023-4-17 19:09:54的发言:

批量给文件加密处理,那你需要学习的知识蛮广的!因为每一种类型的文件格式都有自己PE头+格式!你需要知道你所关注的文件类型格式,如果这个文件类型是所有,那你就要知道IDE是怎么编程来的,也就是编程的天花板了。。。。,如果是特定一些常用的文件类型(比如:excel,word,txt,dbf,pdf,这类文件网上找找格式说明很多。。。在应该的地方随便加点什么就可视为加密。。。。,再或者试试全部转成二进制你加个算法把进制破坏+还原,文件名=  任意名称+原文件扩展名+加密关键字.vfp加密,进制破坏拿不到你算法还原再NB还解密不了!有些公开的加密算法你需要在其它语言引用到VFP来,有对称的和非对称.

也许不用那么复杂,加密时只要考虑加密后的文件内容不容易被他人识别或破解就行,解密就只要保证100%恢复原状就行。
#10
my23182023-04-18 09:14
回复 9楼 hu9jj
正解。
#11
xuminxz2023-04-18 15:49
程序代码:
On Error xlsrs=Createobject('Excel.application')
xlsrs=Getobject(,'Excel.application')
*On Error
xlsrs.Visible=.T.
_fnm=ADDBS(JUSTPATH(SYS(16,1)))
SET DEFAULT TO (_fnm)
_fnm=ADDBS(JUSTPATH(SYS(16,1)))+'表.xls'
xlsrs.Workbooks.Open(_fnm)
_rows=xlsrs.sheets(1).UsedRange.Rows.Count&&有数据的总行数
CLOSE TABLES all
CREATE table jmwj (sfl c(40),tfl c(40) ,pswd c(32))
FOR i=2 TO _rows
    APPEND BLANK
    REPLACE sfl WITH Alltrim(xlsrs.cells(i,1).Value),tfl WITH Alltrim(xlsrs.cells(i,2).Value),pswd WITH Alltrim(xlsrs.cells(i,3).Value)
ENDFOR
xlsrs.Workbooks.Close()
xlsrs.quit
Release xlsrs
IF FILE("C:\Program Files\WinRAR\Rar.exe")
    cmdstr='"C:\Program Files\WinRAR\Rar.exe" a -hp'
ELSE
    IF FILE("C:\ProgramFiles(x86)\WinRAR\Rar.exe")
    cmdstr='"C:\ProgramFiles(x86)\WinRAR\Rar.exe " a -hp'
    ELSE
        =MESSAGEBOX("未找到RAR程序")
    ENDIF
ENDIF
**-hp 改为 -p 可不用密码看到压缩包中的文件名
SCAN

    dbnm=JUSTSTEM(sfl)+'.dbf'
    tnm=' '+JUSTSTEM(tfl)+'.rar '
    pwd=ALLTRIM(pswd)
    cmd=cmdstr+pwd+tnm+dbnm
    RUN /n7 &cmd.
ENDSCAN
#12
lnsyzhuhua2023-04-20 08:47
感谢xuminxz
问题解决了!
1