• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    一個利用隨機數加密字串的算法

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網        首先這個算法沒什么特殊之處,只是怕以后找不到,所以放到了這上面

           每個字節加密后有6種結果(占兩個字節,如果需要大于6種的話,就要多用1個字節,即占3 個字節),也就是說如果字串占n個字節的話,可能產生的結果為6的n次方個,這個算法破解的強度不大,大家可以完善一下:

    '窗體上一個按鈕,兩個listbox
    Option Explicit

    Private Sub Command1_Click()
        Dim i As Long
        Dim s As String
        For i = 1 To 100
            s = encode("這是一個測試 hello world")
            List1.AddItem s
            s = decode(s)
            List2.AddItem s
        Next
    End Sub
    Private Function encode(ByVal s As String) As String '加密
        If Len(s) = 0 Then Exit Function
        Dim buff() As Byte
        buff = StrConv(s, vbFromUnicode)
        Dim i As Long
        Dim j As Byte
        Dim k As Byte, m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim outs As String
        i = UBound(buff) + 1
        outs = Space(2 * i)
        Dim temps As String
        For i = 0 To UBound(buff)
            Randomize Time
            j = CByte(5 * (Math.Rnd()) + 0) '最大產生的隨機數只能是5,不能再大了,再大的話,就要多用一個字節
            buff(i) = buff(i) Xor j
            k = buff(i) Mod Len(mstr)
            m = buff(i) \ Len(mstr)
            m = m * 2 ^ 3 + j
            temps = Mid(mstr, k + 1, 1) + Mid(mstr, m + 1, 1)
            Mid(outs, 2 * i + 1, 2) = temps
         Next
         encode = outs
    End Function

    Private Function decode(ByVal s As String) As String '解密
        On Error GoTo myERR
        Dim i As Long
        Dim j As Byte
        Dim k As Byte
        Dim m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim t1 As String, t2 As String
        Dim buff() As Byte
        Dim n As Long
        n = 0
        For i = 1 To Len(s) Step 2
            t1 = Mid(s, i, 1)
            t2 = Mid(s, i + 1, 1)
            k = InStr(1, mstr, t1) - 1
            m = InStr(1, mstr, t2) - 1
            j = m \ 2 ^ 3
            m = m - j * 2 ^ 3
            ReDim Preserve buff(n)
            buff(n) = j * Len(mstr) + k
            buff(n) = buff(n) Xor m
            n = n + 1
         Next
         decode = StrConv(buff, vbUnicode)
         Exit Function
    myERR:
         decode = ""
    End Function

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>