Select Between/Not between
Trang 1Mộ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ã
Trang 2′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