Tải bản đầy đủ (.doc) (2 trang)

Phương pháp mã hóa và giải mã

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (127.83 KB, 2 trang )

Một phương pháp mã hoá và giải mã văn bản dạng text
Võ Công Chương
Phương pháp mã hoá văn bản mà tôi sắp nêu ra sau dây cũng là một trong những phương
pháp mã hoá thông thường, hy vọng nó sẽ là một phương pháp mới trong sổ tay lập trình
của các bạn yêu Tin học.
Trong phương pháp này, văn bản cần mã hoá hay giải mã của chúng ta là một dãy kí tự.
Tuỳ thuộc vào khoá (keyID: là một số nguyên kiểu longInt) do chúng ta đưa vào mà kết
quả của phương pháp sẽ khác nhau. Điều này nghĩa là nếu văn bản được mã hoá theo một
khoá nào đó thì khi giải mã ta cũng phải dùng lại ngay chính khoá đó. Do vậy, mặc dầu
phương pháp mã hoá này ai cũng biết nhưng họ chỉ giải mã được văn bản đã được mã hoá
một khi họ biết được khoá dùng để mã hoá văn bản ấy. Mô hình mã hoá và giải mã được
biểu diễn như hình 1.
Nhận xét: Ta cũng có thể mã hoá văn bản của ta qua N lần bởi N khoá khác nhau. Khi đó,
công việc giải mã phải làm ngược lại, nghĩa là phải giải mã N lần với N khoá tương ứng đã
dùng. Biểu diễn quá trình này ở hình 2.
Như vậy, ta phải có hai hàm, hàm thứ nhất dùng để mã hoá, hàm thứ hai dùng để giải mã.
Tuy nhiên, trong hàm mà tôi cài đặt sau đây nó đảm nhận cả hai chức năng trên (Bạn hãy
để ý toán tử Xor trong giải thuật). Giải thuật trong hàm này không có gì phức tạp. Toàn bộ
mã nguồn của hàm được cài đặt trong VB như sau:
Function MyEncrypt(MyStr As String, keyID As Long) As String
′Vào: MyStr là văn bản cần mã hoá hay giải mã.
′ keyID là khoá dùng cho việc mã hoá hay giải mã.
′Ra: Trả lại văn bản đã được mã hoá/giải mã.
Dim i As Integer
Dim stepNum As Integer
Dim keyIDtmp As Integer
Dim tmp As String
Dim ch As String
Dim byteArray() As Byte
tmp = Trim$(Str(keyID))
keyID = 0


For i = 1 To Len(tmp)
keyID = keyID + CLng(Mid(tmp, i, 1))
Next i
While (keyID > 255)
keyID = -1 + (keyID - 255)
Wend
ReDim Preserve byteArray(Len(MyStr))
For i = 1 To Len(MyStr)
byteArray(i) = Asc(Mid(MyStr, i, 1))
stepNum = keyID + i
While (stepNum > 255)
stepNum = -1 + (stepNum - 255)
Wend
byteArray(i) = byteArray(i) Xor CByte(stepNum)
Next i
tmp = ″ ″
For i = 1 To Len(MyStr)
tmp = tmp & Chr(byteArray(i))
Next i
MyEncrypt = tmp
End Function
Từ nay, sau khi có được phương pháp mã hoá này, chúng ta sẽ trao đổi tài liệu mật cho
nhau mà không sợ bị người khác đọc được. Tất nhiên, hai người trao đổi tài liệu đó phải
qui định khoá dùng cho cho công việc mã hoá và giải mã tài liệu của mình.

×