Giúp Mã hoá chuỗi ký tự thành số để bảo mật

Liên hệ QC

vitinhhanoi

Thành viên mới
Tham gia
10/9/11
Bài viết
2
Được thích
0
Giúp Mã hoá chuỗi ký tự thành số để bảo mật
Các cao thủ giúp em với: Tình hình là thế này em muốn tạo một mã hoá để bảo vệ bản quyển bảng tính.
trong excel chỉ biết dùng hàm code nhưng nó chỉ chuyển được 1 ký tự đầu thôi: ví dụ: A -> 65, B-> 66
Giờ em muốn mã hoá cả chuỗi ví dụ: Bản Quyền -> ? (số khác số 66) nhưng dùng hàm code nó chỉ mỗi mã hoã được chữ B đầu kia thôi nên nó thành số 66.

ý em là chuyển cá chữ "Bản Quyền" đó sang số
 
Giúp Mã hoá chuỗi ký tự thành số để bảo mật
Các cao thủ giúp em với: Tình hình là thế này em muốn tạo một mã hoá để bảo vệ bản quyển bảng tính.
trong excel chỉ biết dùng hàm code nhưng nó chỉ chuyển được 1 ký tự đầu thôi: ví dụ: A -> 65, B-> 66
Giờ em muốn mã hoá cả chuỗi ví dụ: Bản Quyền -> ? (số khác số 66) nhưng dùng hàm code nó chỉ mỗi mã hoã được chữ B đầu kia thôi nên nó thành số 66.

ý em là chuyển cá chữ "Bản Quyền" đó sang số
Vầy thử xem:
PHP:
Function Encrypt(ByVal Text As String) As String
  Dim i As Long, Arr()
  On Error Resume Next
  ReDim Arr(1 To Len(Text))
  For i = 1 To Len(Text)
    Arr(i) = AscW(Mid(Text, i, 1))
  Next
  Encrypt = Join(Arr, "")
End Function
 
Upvote 0
Vầy thử xem:
PHP:
Function Encrypt(ByVal Text As String) As String
  Dim i As Long, Arr()
  On Error Resume Next
  ReDim Arr(1 To Len(Text))
  For i = 1 To Len(Text)
    Arr(i) = AscW(Mid(Text, i, 1))
  Next
  Encrypt = Join(Arr, "")
End Function

Anh có thể viết thành file chương trình để em download về chạy được không anh
 
Upvote 0

File đính kèm

  • Encrypt.xls
    18.5 KB · Đọc: 162
Upvote 0
Bạn thử kiểu kiểu này xem, không biết thuật toán cũng mệt:

Mã:
Option Explicit
Sub MaHoa()
Dim i, St, Kq
St = Application.InputBox("Chon o can Ma hoa", , , , , , , 8)
For i = 1 To Len(St)
Kq = Kq & StrReverse(Right("0000" & AscW(Mid(St, i, 1)), 4))
Next
Sheet2.[a65536].End(3).Offset(1) = Kq
MsgBox Kq
End Sub
'-------------------------------------------------------
Sub UnMaHoa()
Dim Ma, Kq, i
Ma = Application.InputBox("Chon o ma can giai", , , , , , , 8)
Ma = Trim(Ma)
For i = 0 To Len(Ma) Step 4
Kq = Kq & ChrW(Val(StrReverse(Mid(Ma, i + 1, 4))))
Next
Sheet2.[a65536].End(3).Offset(1) = Kq
MsgBox Kq
End Sub

bạn chế biến cho thêm code thì biết thuật toán thì còn phải biết code mới giải được. Ví dụ:

Mã:
.....................
Kq = Kq & StrReverse(Right("0000" & AscW(Mid(St, i, 1))+Code, 4))
.....................
 

File đính kèm

  • Ma hoa.xls
    25.5 KB · Đọc: 92
Lần chỉnh sửa cuối:
Upvote 0
Mình xin giới thiệu với các bạn hàm tạo chìa khóa mật mã

Trước hết nói về ống khóa:

Ống khóa là chuỗi 36 kí số & kí tự theo bảng chữ cái tiếng Anh
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Hàm người dùng sau đây sẽ tạo ra chìa khóa mật mã mà ta muốn:\

PHP:
Function HV6x6(MaKhoa As String)
 Dim cSo As String, Tmp As String, Alf As String:           Const KT As String = " "
 Dim VTr As Byte, J As Byte
 
 MaKhoa = Trim(UCase$(MaKhoa)) & KT
 cSo = "0123456789"
 Do
    VTr = InStr(MaKhoa, KT)
    If VTr < 1 Then Exit Do
    Tmp = Tmp & Left(MaKhoa, VTr - 1) & Left(cSo, 7 - VTr)
    cSo = Mid(cSo, 7 - VTr + 1, 9)
    MaKhoa = Mid(MaKhoa, VTr + 1, 22)
 Loop
 Alf = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 For J = 1 To Len(Tmp)
    Alf = Replace(Alf, Mid(Tmp, J, 1), "")
 Next J
 If Len(cSo) > 0 Then
    On Error Resume Next
    For J = 1 To Len(cSo)
        VTr = 6 * J - 1
        Alf = Left(Alf, VTr) & Mid(cSo, J, 1) & Mid(Alf, VTr + 1, 22)
    Next J
 End If
 HV6x6 = Tmp & Alf
End Function

Theo đó, tại 1 ô trống nào đó ta nhập cú fáp hàm:
=HV6x6("Hong Viet")
Hàm sẽ trả về kết quả:
HONG01VIET23ABCDF4JKLMP5QRSUW6XYZ789
Có nghĩa là hàm tạo ra chuỗi mới gồm 6 nhóm nhỏ, mỗi nhóm 6 kí tự hay kí số
Các nhóm đầu có thành fần gồm 1 từ trong chìa khóa ghép với các kí số cho đủ số lượng 6 của mỗi nhóm
Hết các từ khóa, thì ghép theo fương án 2 như sau:
Ghép 5 kí tự còn lại & 1 kí số còn lại
(Các bạn chú í các từ 'còn lại' thì sẽ rõ vấn đề hơn)

Sau đó các bạn đến đây để biết thêm chi tiết:
http://www.giaiphapexcel.com/forum/showthread.php?87907-Hàm-để-mã-hóa-các-ký-tự/page2


 
Upvote 0
Mình xin giới thiệu với các bạn hàm tạo chìa khóa mật mã

Trước hết nói về ống khóa:

Ống khóa là chuỗi 36 kí số & kí tự theo bảng chữ cái tiếng Anh
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Hàm người dùng sau đây sẽ tạo ra chìa khóa mật mã mà ta muốn:\

PHP:
Function HV6x6(MaKhoa As String)
Dim cSo As String, Tmp As String, Alf As String:           Const KT As String = " "
Dim VTr As Byte, J As Byte

MaKhoa = Trim(UCase$(MaKhoa)) & KT
cSo = "0123456789"
Do
    VTr = InStr(MaKhoa, KT)
    If VTr < 1 Then Exit Do
    Tmp = Tmp & Left(MaKhoa, VTr - 1) & Left(cSo, 7 - VTr)
    cSo = Mid(cSo, 7 - VTr + 1, 9)
    MaKhoa = Mid(MaKhoa, VTr + 1, 22)
Loop
Alf = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For J = 1 To Len(Tmp)
    Alf = Replace(Alf, Mid(Tmp, J, 1), "")
Next J
If Len(cSo) > 0 Then
    On Error Resume Next
    For J = 1 To Len(cSo)
        VTr = 6 * J - 1
        Alf = Left(Alf, VTr) & Mid(cSo, J, 1) & Mid(Alf, VTr + 1, 22)
    Next J
End If
HV6x6 = Tmp & Alf
End Function

Theo đó, tại 1 ô trống nào đó ta nhập cú fáp hàm:
=HV6x6("Hong Viet")
Hàm sẽ trả về kết quả:
HONG01VIET23ABCDF4JKLMP5QRSUW6XYZ789
Có nghĩa là hàm tạo ra chuỗi mới gồm 6 nhóm nhỏ, mỗi nhóm 6 kí tự hay kí số
Các nhóm đầu có thành fần gồm 1 từ trong chìa khóa ghép với các kí số cho đủ số lượng 6 của mỗi nhóm
Hết các từ khóa, thì ghép theo fương án 2 như sau:
Ghép 5 kí tự còn lại & 1 kí số còn lại
(Các bạn chú í các từ 'còn lại' thì sẽ rõ vấn đề hơn)

Sau đó các bạn đến đây để biết thêm chi tiết:
http://www.giaiphapexcel.com/forum/showthread.php?87907-Hàm-để-mã-hóa-các-ký-tự/page2


Em chào các bác.
Các bác cho em hỏi là em làm nhử ảnh đính kèm rồi mà sao lại không mã hóa được nhỉ?
HV6x6.PNG
 
Upvote 0
Có các nào mã hóa đơn giản không bác. Dữ liệu k quá quan trọng nền không cần phần mềm cao siêu.
Bác xem giúp xem em làm sai ở đâu mà không được với đoạn code mã hóa trên với ah



Mã:
'--- Mã hóa
Function strConv(MyString As String) As String
    Dim CharCode As String, i As Integer
    For i = 1 To Len(MyString)
        CharCode = CharCode & " " & Asc(Mid(MyString, i, 1))
    Next
    strConv = CharCode
 
End Function

Mã:
'---Giải mã
Function strConv1(MyString As String) As String
    Dim CharCode As String, i As Integer, arr As Variant
    Application.Volatile
    arr = Split(Trim(MyString), " ")
    For i = LBound(arr) To UBound(arr)
        CharCode = CharCode & Chr(arr(i))
    Next
    strConv1 = CharCode
   
End Function

 
Upvote 0
Có các nào mã hóa đơn giản không bác. Dữ liệu k quá quan trọng nền không cần phần mềm cao siêu.
Bác xem giúp xem em làm sai ở đâu mà không được với đoạn code mã hóa trên với ah
Muốn tìm hiểu mã hóa, thì nhiều, thử với dạng phổ biến, đơn giản và bải bản và có nhiều mã nguồn là MD5
Xem tạm ở đây, muốn thêm thì cứ nhờ bác google, English hay Việt đều có
.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom