一种字符串加密算法

Eddy 发布于2010-9-11 23:38:26 分类: 加密解密 已浏览loading 网友评论1条 我要评论

黑防上的一篇文章中写出来的。代码如下:

Option Explicit

Public Sub MAIN()
    On Error Resume Next
    Dim Aaa As String
    Dim Gx(11) As String '待准备的字符串数组
    Gx(0) = "髙瞻祁见佑厚载翊常由慈和怡伯仲简"
    Gx(1) = "允文遵祖训钦武大君胜顺道宜逢吉师"
    Gx(2) = "尚志公诚秉惟怀敬谊存辅嗣资廉直匡"
    Gx(3) = "赞佐相规约经邦任履亨若依纯一行远"
    Gx(4) = "有子同安睦勤朝在肃恭绍伦敷惠润昭"
    Gx(5) = "孟季均荣显英华蕴盛容宏才升博衍茂"
    Gx(6) = "贤能长可庆睿智实堪宗养性期渊雅寅"
    Gx(7) = "肇泰阳当健观颐寿以弘振举希兼达康"
    Gx(8) = "悦友申宾让承宣奉至平懋进深滋益端"
    Gx(9) = "久镇开方岳扬威谨礼仪刚毅循超卓权"
    Gx(10) = "冲范徵偕旭融谟朗璟逵亶韶愉灏慥令"
    Gx(11) = "佶幼诠勋胤恬珵效回瑝湜源諲皙暐圭"
    Aaa = m_GTSII.GTSII(InputBox("Input Words:", "GTSII", "世界,你好!"), Gx): MsgBox Aaa
    MsgBox m_GTSII.unGTSII(Aaa, Gx)
End Sub

Option Explicit

Public Function GTSII(ByVal Txt As String, ByRef G() As String) As String
    Dim SJn(11) As Integer
    Dim i As Integer, sJs As Integer, eGLen As Integer, gTsX As String
    eGLen = Len(G(0))
    gTsX = CTA(Txt)
    For i = 1 To Len(gTsX)
        sJs = MyRnd(1, eGLen)
        Select Case Mid(gTsX, i, 1)
            Case "0"
                GTSII = GTSII & (Mid(G(0), sJs, 1))
            Case "1"
                GTSII = GTSII & (Mid(G(1), sJs, 1))
            Case "2"
                GTSII = GTSII & (Mid(G(2), sJs, 1))
            Case "3"
                GTSII = GTSII & (Mid(G(3), sJs, 1))
            Case "4"
                GTSII = GTSII & (Mid(G(4), sJs, 1))
            Case "5"
                GTSII = GTSII & (Mid(G(5), sJs, 1))
            Case "6"
                GTSII = GTSII & (Mid(G(6), sJs, 1))
            Case "7"
                GTSII = GTSII & (Mid(G(7), sJs, 1))
            Case "8"
                GTSII = GTSII & (Mid(G(8), sJs, 1))
            Case "9"
                GTSII = GTSII & (Mid(G(9), sJs, 1))
            Case " "
                GTSII = GTSII & (Mid(G(10), sJs, 1))
            Case "-"
                GTSII = GTSII & (Mid(G(11), sJs, 1))
            Case Else
        End Select
    Next
End Function

Public Function unGTSII(ByVal Txt As String, ByRef G() As String)
    On Error Resume Next
    Dim SJn(11) As Integer
    Dim x As Integer, y As Integer, eGLen As Integer, TH As String
    eGLen = Len(G(0))
    unGTSII = Txt
    For x = 0 To 9
        For y = 1 To eGLen
            TH = Mid(G(x), y, 1)
            unGTSII = Replace(unGTSII, TH, CStr(x))
        Next
    Next
    For y = 1 To eGLen
        TH = Mid(G(10), y, 1)
        unGTSII = Replace(unGTSII, TH, " ")
    Next
    For y = 1 To eGLen
        TH = Mid(G(11), y, 1)
        unGTSII = Replace(unGTSII, TH, "-")
    Next
    unGTSII = ATC(unGTSII)
End Function

Public Function CTA(ByVal Txt As String) As String
    On Error Resume Next
    Dim i As Long
    For i = 1 To Len(Txt)
        CTA = CTA + Chr(32) + CStr(Asc(Mid(Txt, i, 1)))
    Next
    CTA = Trim(CTA)
End Function

Public Function ATC(ByVal Txt As String) As String
    On Error Resume Next
    Dim i As Long
    Dim SsZ() As String
    SsZ = Split(Txt, Chr(32))
    For i = 0 To UBound(SsZ)
        ATC = ATC & Chr(CLng(SsZ(i)))
    Next
End Function

Public Function MyRnd(ByVal UpperBound As Integer, ByVal LowerBound As Integer)
    On Error Resume Next
    Randomize
    MyRnd = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound)
End Function

已经有(1)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/decryption/573.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言