gearbox 算法

来源:互联网 发布:青少年人工智能教育 编辑:程序博客网 时间:2024/04/28 21:33

 

Private Sub Command2_Click()
Dim as_in As String
Dim ls_out As String
Dim ls_number_code As String
Dim ls_string_code As String
Dim ls_matrix As String
Dim ll_no As Long
Dim ll_len As Long
Dim ll_code_no As Long
Dim ll_code_len As Long
Dim ll_sum As Long
Dim ls_digit As String
Dim ls_digit_revert As String
Dim ls_code_char As String
Dim ls_encrypt_char As String
Dim li_code_pos As Integer
Dim li_matrix_pos As Integer
as_in = Trim(Text1.Text)
ls_string_code = "WZBNCHSDXR"
ls_number_code = "0123456789"
ls_matrix = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ll_len = Len(as_in)

For ll_no = 1 To ll_len
    ls_digit = Mid(as_in, ll_no, 1)
    ls_digit_revert = Mid(as_in, ll_len - ll_no + 1, 1)
   
    li_code_pos = InStr(ls_number_code, ls_digit)
    ls_code_char = Mid(ls_string_code, li_code_pos, 1)
    ll_sum = 1.67 * ll_sum + Val(ls_digit_revert) + li_code_pos
    li_matrix_pos = (InStr(ls_matrix, ls_code_char) + ll_sum) Mod 26
    'MsgBox str(ll_sum)
    If li_matrix_pos < 1 Then
      li_matrix_pos = 1
    End If
    ls_encrypt_char = Mid(ls_matrix, li_matrix_pos, 1)
    If ll_no = 1 Or ll_no = 2 Or ll_no = 3 Or ll_no = 5 Or ll_no = 6 Or ll_no = 7 Or ll_no = 8 Or ll_no = 9 Or ll_no = 11 Then
      Select Case ls_encrypt_char
        Case "A"
            ls_encrypt_char = "1"
        Case "B"
            ls_encrypt_char = "2"
        Case "C"
            ls_encrypt_char = "3"
        Case "D"
            ls_encrypt_char = "4"
        Case "E"
            ls_encrypt_char = "5"
        Case "F"
            ls_encrypt_char = "6"
        Case "G"
            ls_encrypt_char = "7"
        Case "H"
            ls_encrypt_char = "8"
        Case "I"
            ls_encrypt_char = "9"
        Case "J"
            ls_encrypt_char = "1"
        Case "K"
            ls_encrypt_char = "2"
        Case "L"
            ls_encrypt_char = "3"
        Case "M"
            ls_encrypt_char = "4"
        Case "N"
            ls_encrypt_char = "5"
        Case "O"
            ls_encrypt_char = "6"
        Case "P"
            ls_encrypt_char = "7"
        Case "Q"
            ls_encrypt_char = "8"
        Case "R"
            ls_encrypt_char = "9"
        Case "S"
            ls_encrypt_char = "1"
        Case "T"
            ls_encrypt_char = "2"
        Case "U"
            ls_encrypt_char = "3"
        Case "V"
            ls_encrypt_char = "4"
        Case "W"
            ls_encrypt_char = "5"
        Case "X"
            ls_encrypt_char = "6"
        Case "Y"
            ls_encrypt_char = "7"
        Case "Z"
            ls_encrypt_char = "8"
      End Select
    End If
    ls_out = ls_out + ls_encrypt_char
Next
Text2.Text = ls_out

End Sub