Thế thì bạn gửi cho tớ nhé: ngocdd@itprog.gov.vn
Nick yahoo của tớ là dangdinhngoc, Okay! tớ lại phải quay lại vấn đề này vậy, mặc dù mdb security đã được bàn luận khá nhiều.... nhưng tớ sẽ không muốn đi lạc đề khỏi chủ đề Office VBA đâu!!!
Tks bạn nhiều nhé.
Tiện đây tôi bổ sung thêm 1 thuật toán mã hoá cũng khá tiện dụng là RC4 mặc dù hiện nay người ta đã ít dùng nó hơn:
* Chìa khoá mã hoá: AJHGJHSJAH6433ASJHASAL981467
Bạn hãy cất chìa khoá này đâu đó trong máy tính hoặc registry để tránh bị đánh cắp
* Thuật toán xử lý:
Cách gọi hàm mã hoá:***=RC4([chuỗi cần mã hoá],[chìa khoá]
Function RC4(ByRef pStrMessage, ByRef pStrKey)
Dim lBytAsciiAry(255)
Dim lBytKeyAry(255)
Dim lLngIndex
Dim lBytJump
Dim lBytTemp
Dim lBytY
Dim lLngT
Dim lLngX
Dim lLngKeyLength
' Validate data
If Len(pStrKey) = 0 Then Exit Function
If Len(pStrMessage) = 0 Then Exit Function
' transfer repeated key to array
lLngKeyLength = Len(pStrKey)
For lLngIndex = 0 To 255
lBytKeyAry(lLngIndex) = Asc(Mid(pStrKey, ((lLngIndex) Mod (lLngKeyLength)) + 1, 1))
Next
' Initialize S
For lLngIndex = 0 To 255
lBytAsciiAry(lLngIndex) = lLngIndex
Next
' Switch values of S arround based off of index and Key value
lBytJump = 0
For lLngIndex = 0 To 255
' Figure index to switch
lBytJump = (lBytJump + lBytAsciiAry(lLngIndex) + lBytKeyAry(lLngIndex)) Mod 256
' Do the switch
lBytTemp = lBytAsciiAry(lLngIndex)
lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
lBytAsciiAry(lBytJump) = lBytTemp
Next
lLngIndex = 0
lBytJump = 0
For lLngX = 1 To Len(pStrMessage)
lLngIndex = (lLngIndex + 1) Mod 256 ' wrap index
lBytJump = (lBytJump + lBytAsciiAry(lLngIndex)) Mod 256 ' wrap J+S()
' Add/Wrap those two
lLngT = (lBytAsciiAry(lLngIndex) + lBytAsciiAry(lBytJump)) Mod 256
' Switcheroo
lBytTemp = lBytAsciiAry(lLngIndex)
lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
lBytAsciiAry(lBytJump) = lBytTemp
lBytY = lBytAsciiAry(lLngT)
' Character Encryption ...
RC4 = RC4 & Chr(Asc(Mid(pStrMessage, lLngX, 1)) Xor lBytY)
Next
End Function
Bookmarks