国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

數據庫加密與解密技術之一 FOXPRO篇

2024-07-21 02:12:11
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,


     數據庫加密與解密技術之一 foxpro篇
作者:  ccbzzp

      在現實的應用中, 數據的安全是很重要的, 特別是象銀行等保密性非常重要的部門,
所以對數據的加密就特別重要, 筆者在長期的應用中總結出各種數據庫的加密和解密的
寫法, 希望對大家有幫助, 同時也和大家一起探討, 一起學習, 共同進步!

      foxpro為用戶提供一些低級的文件操作函數,利用這些低級的操作函數用戶可以實現對低級文件的操作,這些低級的函數主要有: fclose(),fcreate(),feof(),ferror(),fflush(),fgets(),fopen(),fputs(),fread(),fseek(),strtofile()等,這些函數的具體用法在此就不具體的描述,在下面的文章中會利用這些函數的.

1. 對數據進行加密

下面以修改一個用戶的密碼為例來說明:

程序chang_password的click()內容:

if vartype(m.id_man)<>'c' .or. vartype(m.id_psd)<>'c'
 =messagebox('妳還沒有註冊﹗不可以變更密碼﹐',0+48+0,'信息提示﹗')=6
 return
else
 select &father_table.
 locate for alltrim(id_man)==alltrim(m.id_man) ;
  .and.

alltrim(this.parent.encrypt_data.click(id_psd,m.id_man))==alltrim(m.id_psd) ;
  .and. !deleted()
 if found()
  if alltrim(m.new_password1)==alltrim(m.new_password2)
   replace &father_table..id_psd with

this.parent.encrypt_data.click(m.new_password1,m.id_man)
   =messagebox('密碼變更成功﹗',0+48+0,'信息提示﹗')
  else
   =messagebox('密碼沒有變更﹗兩次新密碼不一致﹗',0+48+0,'信息提示﹗

')
  endif
 else
  =messagebox('密碼沒有變更﹗舊密碼錯誤﹗',0+48+0,'信息提示﹗')
 endif
endif
this.parent.release()

 


程序encrypt_data的click()內容:

lparameters encrypt_password , encrypt_chr
encrypt_chr=alltrim(upper(encrypt_chr))
encrypt_chr1='340821960120581'
encrypt_long=len(encrypt_chr1)
encrypt_chr2=left(encrypt_chr+encrypt_chr+encrypt_chr+encrypt_chr,encrypt_long)
this.return_data=''
for i=1 to encrypt_long step 1
alteration_chr=chr(bitxor(asc(subst(encrypt_chr1,i,1)),asc(subst(encrypt_chr2,i,1))))
 

this.return_data=this.return_data+chr(bitxor(asc(subst(encrypt_password,i,1)),asc(alterati

on_chr)))
endfor
return this.return_data


2. 對數據庫文件進行加密
假如存在數據庫文件c:/users.dbf;

handle1=fopen("c:/users.dbf")
if handle1<0
   messagebox("沒有找到指定文件...",0+64,"信息提示!")
   return
endif
i=1
handle2=fcreate("c:/users.dbf")
do while .t.
   =fseek(handle1,i*32)
   retasc=fread(handle1,32)
   if asc(retasc)=13
      exit
   endif
   i=i+1
enddo
=fseek(handle1,0)
retstr=fread(handle,i*32)
=fwrite(handle2,retstr)
x=i*32
j=0
do while .not. feof(handle1)
   =fseek(handle1,x+j)
   retasc=fread(handle1,1)
   if asc(retasc)>253
      ch=chr(255-asc(retasc))
   else
      ch=chr(asc(retasc)+2)
   endif
   =fwrite(handle2,ch)
   j=j+1
enddo
messagebox("加密成功...",0+64,"信息提示!")
=fclose(handle1)
=fclose(handle2)
return

 

3. 對數據庫文件進行解密
假如存在數據庫文件c:/users.dbf;

handle1=fopen("c:/users.dbf")
if handle1<0
   messagebox("沒有找到指定文件...",0+64,"信息提示!")
   return
endif
handle2=fcreate("c:/users.dbf")
i=1
do while .t.
   =fseek(handle1,i*32)
   retasc=fread(handle1,32)
   if asc(retasc)=13
      exit
   endif
   i=i+1
enddo
=fseek(handle1,0)
retstr=fread(handle,i*32)
=fwrite(handle2,retstr)
x=i*32
j=0
do while .not. feof(handle1)
   =fseek(handle1,x+j)
   retasc=fread(handle1,1)
   if asc(retasc)<2
      ch=chr(255-asc(retasc))
   else
      ch=chr(asc(retasc)-2)
   endif
   =fwrite(handle2,ch)
   j=j+1
enddo
messagebox("解密成功...",0+64,"信息提示!")
=fclose(handle1)
=fclose(handle2)
return


以上如果要轉載請注明出處.

待續...
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沧州市| 穆棱市| 紫阳县| 衡水市| 缙云县| 浑源县| 张家港市| 齐河县| 青海省| 永胜县| 奉节县| 彩票| 名山县| 延吉市| 翁牛特旗| 广河县| 樟树市| 泾川县| 南宫市| 金湖县| 荆门市| 宜君县| 峨边| 马公市| 凌源市| 肥城市| 英山县| 筠连县| 鲁山县| 武清区| 玉林市| 桐乡市| 靖边县| 卓资县| 安岳县| 会理县| 宜城市| 灌阳县| 安岳县| 无为县| 来凤县|