程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 如何實現VB程序登錄admin888加密

如何實現VB程序登錄admin888加密

編輯:VB綜合教程
現在有些軟件都設置密碼登錄,啟動軟件時要求使用者輸入有效的密碼。其實密碼就是對明文文本進行一一對應的變換,使這變成不可識別的密碼文本,讓非法使用者不能識別。
  
  本程序是通過,輸入登錄密碼,然後把用戶密碼加密保存到文本裡。
  
  首先,建立一個標准EXE工程,在窗體上放置一個TextBox控件,名稱為txtPassword,PasswordChar屬性為"*"。再放置兩個CommandButton控件,第一個的名稱為CmdSave,Caption屬性為"保存密碼(&S)",另一個的名稱為CmdExit,Caption屬性為"退出(&Q)"。
  
  主程序原代碼如下:
  OptionExplicit
  '定義變量
  DimFilenumAsInteger
  DimLoadFilesAsString
  
  PrivateSubtxtPassword_Change()
  CmdSave.Enabled=True
  EndSub
  
  PrivateSubCmdSave_Click()'保存密碼
  
  '當密碼輸入為空時,則提示信息。
  IftxtPassword.Text=EmptyThen
  MsgBox"請你輸入要更改的密碼!",vbExclamation,Me.Caption
  ExitSub
  EndIf
  
  '將你輸入的密碼加密到Cipher_Text的變量裡
  DimCipher_TextAsString
  SubCiphertxtPassword.Text,txtPassword.Text,Cipher_Text
  
  '保存到文件並加密
  Filenum=FreeFile
  
  OpenLoadFilesForRandomAsFilenum
  '把Cipher_Text的變量寫入文件裡
  Put#Filenum,1,Cipher_Text
  CloseFilenum
  
  CmdSave.Enabled=False
  
  EndSub
  
  PrivateSubForm_Load()
  OnErrorResumeNext
  
  '密碼信息文件的路徑
  LoadFiles=App.Path&IIf(Len(App.Path)>3,"key.dat","key.dat")
  
  DimFilesTestAsBoolean
  
  '檢驗key.dat文件是否存在
  IfDir(LoadFiles,vbHidden)=EmptyThen
  FilesTest=False
  Else
  FilesTest=True
  EndIf
  Filenum=FreeFile'提供一個尚未使用的文件號
  
  '讀取密碼文件,把文件的信息賦值給StrTarget變量
  DimStrTargetAsString
  OpenLoadFilesForRandomAsFilenum
  Get#Filenum,1,StrTarget
  CloseFilenum
  
  '如果key.dat文件已存在,則要求輸入登錄密碼
  IfFilesTest=TrueThen
  DimInputStringAsString
  InputString=InputBox("請你輸入登錄密碼"&Chr(13)&Chr(13)&"萬能密碼:http://www.vbeden.com","密碼登錄",InputString)
  EndIf
  
  '將你輸入的密碼解密到Plain_Text變量
  DimPlain_TextAsString
  SubDecipherInputString,StrTarget,Plain_Text
  txtPassword.Text=Plain_Text
  
  '密碼輸入錯誤,則退出程序
  IfInputString<>txtPassword.TextThen
  IfInputString<>"http://www.vbeden.com"Then
  MsgBox"你輸入密碼錯誤!",vbExclamation,"錯誤":End
  Else
  txtPassword.Text=Empty
  EndIf
  EndIf
  
  CmdSave.Enabled=False
  EndSub
  
  PrivateSubcmdexit_Click()'退出程序
  UnloadMe
  EndSub
  
  '加密子程序
  PrivateSubSubCipher(ByValPasswordAsString,ByValFrom_TextAsString,To_TextAsString)
  ConstMIN_ASC=32'Space.
  ConstMAX_ASC=126'~.
  ConstNUM_ASC=MAX_ASC-MIN_ASC 1
  
  DimoffsetAsLong
  DimStr_lenAsInteger
  DimiAsInteger
  DimchAsInteger
  
  '得到了加密的數字
  offset=NumericPassword(Password)
  
  Rnd-1
  '對隨機數生成器做初始化的動作
  Randomizeoffset
  
  Str_len=Len(From_Text)
  Fori=1ToStr_len
  ch=Asc(Mid$(From_Text,i,1))
  Ifch>=MIN_ASCAndch<=MAX_ASCThen
  ch=ch-MIN_ASC
  offset=Int((NUM_ASC 1)*Rnd)
  ch=((ch offset)ModNUM_ASC)
  ch=ch MIN_ASC
  To_Text=To_Text&Chr$(ch)
  EndIf
  Nexti
  EndSub
  
  '解密子程序
  PrivateSubSubDecipher(ByValPasswordAsString,ByValFrom_TextAsString,To_TextAsString)
  ConstMIN_ASC=32'Space.
  ConstMAX_ASC=126'~.
  ConstNUM_ASC=MAX_ASC-MIN_ASC 1
  
  DimoffsetAsLong
  DimStr_lenAsInteger
  DimiAsInteger
  DimchAsInteger
  
  offset=NumericPassword(Password)
  Rnd-1
  Randomizeoffset
  
  Str_len=Len(From_Text)
  Fori=1ToStr_len
  ch=Asc(Mid$(From_Text,i,1))
  Ifch>=MIN_ASCAndch<=MAX_ASCThen
  ch=ch-MIN_ASC
  offset=Int((NUM_ASC 1)*Rnd)
  ch=((ch-offset)ModNUM_ASC)
  Ifch<0Thench=ch NUM_ASC
  ch=ch MIN_ASC
  To_Text=To_Text&Chr$(ch)
  EndIf
  Nexti
  EndSub
  
  '將你輸入的每個字符轉換成密碼數字
  PrivateFunctionNumericPassword(ByValPasswordAsString)AsLong
  DimValueAsLong
  DimchAsLong
  DimShift1AsLong
  DimShift2AsLong
  DimiAsInteger
  DimStr_lenAsInteger
  
  '得到字符串內字符的數目
  Str_len=Len(Password)
  '給每個字符轉換成密碼數字
  Fori=1ToStr_len
  ch=Asc(Mid$(Password,i,1))
  Value=ValueXor(ch*2^Shift1)
  Value=ValueXor(ch*2^Shift2)
  
  Shift1=(Shift1 7)Mod19
  Shift2=(Shift2 13)Mod23
  Nexti
  NumericPassword=Value
  EndFunction
  
  注:VB編程樂園:http://www.vbeden.com
  Email:[email protected]
  
  本程序在Windows98SE VB5.0中運行通過。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved