⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.bas

📁 21加密算法,用vB语言编写实现,可了解各种加密算法的结构
💻 BAS
📖 第 1 页 / 共 3 页
字号:
        Case 22
            If Decode = False Then Call BWT_CodecArray3(WorkArray)
            If Decode = True Then Call BWT_DeCodecArray3(WorkArray)
    End Select
    Master.MousePointer = MousePointerConstants.vbDefault
    If AutoDecodeIsOn = False Then
        Call Show_Statistics(False, WorkArray, Timer - StTime)
    End If
End Sub

'This sub is used to start a compressor
'whichcoder is the constant of the compressortype
'Decode is used to say if we want to compress or decompress
Public Sub Start_Compressor(WichCompressor)
    Dim Decompress As Boolean
    Dim Dummy As Boolean
    Dim StTime As Double
    Dim Text As String
    Dim LastUsed As Integer
    If UBound(OriginalArray) = 0 Then
        MsgBox "There is nothing to compress/Decompress"
        Exit Sub
    End If
    If AutoDecodeIsOn = False Then
        Decompress = True
        frmCompDecomp.Show vbModal
        DoEvents
        If CompDecomp = 0 Then Exit Sub
        If CompDecomp = 1 Then Decompress = False
    Else
        Decompress = True
    End If
    If Decompress = True Then
        LastUsed = UsedCodecs(UBound(UsedCodecs))
        If JustLoaded = True Then LastUsed = 0
        If WichCompressor <> LastUsed Then
            Text = "This is not compressed with " & CompName(WichCompressor) & "." & Chr(13)
            If LastUsed = 0 Then
                Text = Text & "Its not compressed at all"
            Else
                If LastUsed > 128 Then
                    Text = Text & "Its coded with the " & CodName(LastUsed And 127)
                Else
                    Text = Text & "Its compressed with " & CompName(LastUsed)
                End If
            End If
            MsgBox Text
            Exit Sub
        End If
    Else
        LastCoder = WichCompressor
    End If
    Call Copy_Orig2Work
    LastDeCoded = Decompress
    If JustLoaded = True Then
        JustLoaded = False
        ReDim UsedCodecs(0)
    End If
    Master.MousePointer = MousePointerConstants.vbHourglass
    StTime = Timer
    Select Case WichCompressor
        Case 1
            If Decompress = False Then Call Compress_HuffMan(WorkArray)
            If Decompress = True Then Call Decompress_Huffman(WorkArray)
        Case 2
            If Decompress = False Then Call Compress_Grouping(WorkArray)
            If Decompress = True Then Call DeCompress_Grouping(WorkArray)
        Case 3
            If Decompress = False Then Call Compress_SmartGrouping(WorkArray)
            If Decompress = True Then Call DeCompress_SmartGrouping(WorkArray)
        Case 4
            If Decompress = False Then Call Compress_VBC(WorkArray)
            If Decompress = True Then Call DeCompress_VBC(WorkArray)
        Case 5
            If Decompress = False Then Call Compress_VBC_2(WorkArray)
            If Decompress = True Then Call DeCompress_VBC_2(WorkArray)
        Case 6
            If Decompress = False Then Call Compress_VBC_Reorderble(WorkArray)
            If Decompress = True Then Call DeCompress_VBC_Reorderble(WorkArray)
        Case 7
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_Dynamic(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_Dynamic(WorkArray)
        Case 8
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_Static(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_Static(WorkArray)
        Case 9
            If Decompress = False Then Call Compress_HuffManShortDict(WorkArray)
            If Decompress = True Then Call Decompress_HuffmanShortDict(WorkArray)
        Case 10
            If Decompress = False Then Call Compress_Eliminator(WorkArray)
            If Decompress = True Then Call DeCompress_Eliminator(WorkArray)
        Case 11
            If Decompress = False Then Call Compress_Combiner(WorkArray)
            If Decompress = True Then Call DeCompress_Combiner(WorkArray)
        Case 12
            If Decompress = False Then Call Compress_Combiner3Bytes(WorkArray)
            If Decompress = True Then Call DeCompress_Combiner3Bytes(WorkArray)
        Case 13
            If Decompress = False Then Call Compress_CombinerVariable(WorkArray)
            If Decompress = True Then Call DeCompress_CombinerVariable(WorkArray)
        Case 14
            If Decompress = False Then Call Compress_65535(WorkArray)
            If Decompress = True Then Call DeCompress_65535(WorkArray)
        Case 15
            If Decompress = False Then Call Compress_65535_2(WorkArray)
            If Decompress = True Then Call DeCompress_65535_2(WorkArray)
        Case 16
            If Decompress = False Then Call Compress_Elias_Gamma(WorkArray)
            If Decompress = True Then Call DeCompress_Elias_Gamma(WorkArray)
        Case 17
            If Decompress = False Then Call Compress_Elias_Delta(WorkArray)
            If Decompress = True Then Call DeCompress_Elias_Delta(WorkArray)
        Case 18
            If Decompress = False Then Call Compress_Fibonacci(WorkArray)
            If Decompress = True Then Call DeCompress_Fibonacci(WorkArray)
        Case 19
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZWPre(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZWPre(WorkArray)
        Case 20
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_MultyDict(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_MultyDict(WorkArray)
        Case 21
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_LZSS(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_LZSS(WorkArray)
        Case 22
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_MultyDict4(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_MultyDict4(WorkArray)
        Case 23
            If Decompress = False Then Call Compress_Reducer(WorkArray)
            If Decompress = True Then Call DeCompress_Reducer(WorkArray)
        Case 24
            If Decompress = False Then Call Compress_ReducerDynamic(WorkArray)
            If Decompress = True Then Call DeCompress_ReducerDynamic(WorkArray)
        Case 25
            If Decompress = False Then Call Compress_ReducerDynamicPre(WorkArray, 1)
            If Decompress = True Then Call DeCompress_ReducerDynamicPre(WorkArray, 1)
        Case 26
            If Decompress = False Then Call Compress_ReducerDynamicPre(WorkArray, 2)
            If Decompress = True Then Call DeCompress_ReducerDynamicPre(WorkArray, 2)
        Case 27
            If Decompress = False Then Call Compress_ReducerDynamicPre(WorkArray, 3)
            If Decompress = True Then Call DeCompress_ReducerDynamicPre(WorkArray, 3)
        Case 28
            If Decompress = False Then Call Compress_ReducerDynamicPreHuff(WorkArray)
            If Decompress = True Then Call DeCompress_ReducerDynamicPreHuff(WorkArray)
        Case 29
            If Decompress = False Then Call Compress_ReducerDynamicHalfDict(WorkArray)
            If Decompress = True Then Call DeCompress_ReducerDynamicHalfDict(WorkArray)
        Case 30
            If Decompress = False Then Call Compress_ReducerDynamicDict16(WorkArray)
            If Decompress = True Then Call DeCompress_ReducerDynamicDict16(WorkArray)
        Case 31
            If Decompress = False Then Call Compress_RLE(WorkArray)
            If Decompress = True Then Call DeCompress_RLE(WorkArray)
        Case 32
            If Decompress = False Then Call Compress_RLE_Var(WorkArray, Dummy)
            If Decompress = True Then Call DeCompress_RLE_Var(WorkArray)
        Case 33
            If Decompress = False Then Call Compress_RLE_Var_Loop(WorkArray)
            If Decompress = True Then Call DeCompress_RLE_Var_Loop(WorkArray)
        Case 34
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZSS(WorkArray)
            End If
            If Decompress = True Then Call Decompress_LZSS(WorkArray)
        Case 35
            If Decompress = False Then Call Compress_SmartGrouping2(WorkArray)
            If Decompress = True Then Call DeCompress_SmartGrouping2(WorkArray)
        Case 36
            If Decompress = False Then Call Compress_HuffShort16chars(WorkArray)
            If Decompress = True Then Call Decompress_HuffShort16chars(WorkArray)
        Case 37
            If Decompress = False Then Call Compress_Arithmetic(WorkArray)
            If Decompress = True Then Call DeCompress_Arithmetic(WorkArray)
        Case 38
            If Decompress = False Then Call Compress_LBE(WorkArray, 1)
            If Decompress = True Then Call DeCompress_LBE(WorkArray, 1)
        Case 39
            If Decompress = False Then Call Compress_LBE(WorkArray, 2)
            If Decompress = True Then Call DeCompress_LBE(WorkArray, 2)
        Case 40
            If Decompress = False Then Call Compress_LBE(WorkArray, 3)
            If Decompress = True Then Call DeCompress_LBE(WorkArray, 3)
        Case 41
            If Decompress = False Then Call Compress_ArithMetic_DMC(WorkArray)
            If Decompress = True Then Call DeCompress_ArithMetic_DMC(WorkArray)
        Case 42
            If Decompress = False Then Call Compress_Eliminator_Loop(WorkArray)
            If Decompress = True Then Call DeCompress_Eliminator_Loop(WorkArray)
        Case 43
            If Decompress = False Then Call Compress_arithmetic_Dynamic(WorkArray)
            If Decompress = True Then Call DeCompress_arithmetic_Dynamic(WorkArray)
        Case 44
            If Decompress = False Then Call Compress_ReducerDynamicGol(WorkArray)
            If Decompress = True Then Call DeCompress_ReducerDynamicGol(WorkArray)
        Case 45
            If Decompress = False Then Call Compress_ReducerDynamicEG(WorkArray)
            If Decompress = True Then Call DeCompress_ReducerDynamicEG(WorkArray)
        Case 46
            If Decompress = False Then Call Compress_ari_ShortDict(WorkArray)
            If Decompress = True Then Call DeCompress_ari_ShortDict(WorkArray)
        Case 47
            AritmaticRescale = True
            If Decompress = False Then Call Compress_ari_ShortDict(WorkArray)
            If Decompress = True Then Call DeCompress_ari_ShortDict(WorkArray)
            AritmaticRescale = False
        Case 48
            AritmaticRescale = True
            If Decompress = False Then Call Compress_ArithMetic_DMC(WorkArray)
            If Decompress = True Then Call DeCompress_ArithMetic_DMC(WorkArray)
            AritmaticRescale = False
        Case 49
            If Decompress = False Then Call Compress_Orderer(WorkArray)
            If Decompress = True Then Call DeCompress_Orderer(WorkArray)
        Case 50
            If Decompress = False Then Call Compress_VBC_Dynamic(WorkArray)
            If Decompress = True Then Call DeCompress_VBC_Dynamic(WorkArray)
        Case 51
            If Decompress = False Then Call Compress_VBC_Dynamic2(WorkArray)
            If Decompress = True Then Call DeCompress_VBC_Dynamic2(WorkArray)
        Case 52
            If Decompress = False Then Call Compress_Stripper(WorkArray)
            If Decompress = True Then Call DeCompress_Stripper(WorkArray)
        Case 53
            If Decompress = False Then Call Compress_Huffman_Dynamic(WorkArray)
            If Decompress = True Then Call DeCompress_Huffman_Dynamic(WorkArray)
        Case 54
            If Decompress = False Then frmParingType.Show vbModal
            DoEvents
            If Decompress = False Then Call Compress_Pairs(WorkArray)
            If Decompress = True Then Call DeCompress_Pairs(WorkArray)
        Case 55
            If Decompress = False Then frmParingType.Show vbModal
            DoEvents
            If Decompress = False Then Call Compress_Pairs128(WorkArray)
            If Decompress = True Then Call DeCompress_Pairs128(WorkArray)
        Case 56
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZSSLazy(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZSSLazy(WorkArray)
        Case 57
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_Static_Hash(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_Static_Hash(WorkArray)
        Case 58
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZW_Dynamic_Hash(WorkArray)
            End If
            If Decompress = True Then Call DeCompress_LZW_Dynamic_Hash(WorkArray)
        Case 59
            If Decompress = False Then Call Compress_Huffman_Non_Greedy(WorkArray)
            If Decompress = True Then Call DeCompress_Huffman_Non_Greedy(WorkArray)
        Case 60
            If Decompress = False Then Call Compress_Huffman_Non_Greedy2(WorkArray)
            If Decompress = True Then Call DeCompress_Huffman_Non_Greedy2(WorkArray)
        Case 61
            If Decompress = False Then Call Compress_Shortener(WorkArray)
            If Decompress = True Then Call DeCompress_Shortener(WorkArray)
        Case 62
            If Decompress = False Then Call Compress_RLE_3(WorkArray)
            If Decompress = True Then Call DeCompress_RLE_3(WorkArray)
        Case 63
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZSS2(WorkArray)
            End If
            If Decompress = True Then Call Decompress_LZSS2(WorkArray)
        Case 64
            If Decompress = False Then
                ChooseDictSize.Show 1
                Call Compress_LZSS3(WorkArray)
            End If
            If Decompress = True Then Call Decompress_LZSS3(WorkArray)
    End Select
    Master.MousePointer = MousePointerConstants.vbDefault
    If AutoDecodeIsOn = False Then
        Call Show_Statistics(False, WorkArray, Timer - StTime)
    End If
End Sub

'this sub is used to load a chosen file
Public Sub load_File(Name As String)
    Dim FreeNum As Integer
    If Name = "" Then Exit Sub
    FreeNum = FreeFile
    Open Name For Binary As #FreeNum
    ReDim OriginalArray(0 To LOF(FreeNum) - 1)
    Get #FreeNum, , OriginalArray()
    Close #FreeNum
    JustLoaded = True
    Call Split_Header_From_File(OriginalArray)
    Master.Caption = "21种加密54种压缩 V1.04 海阔天空收集整理 http://www.play78.com [file = " & LoadFileName & "]"
    OriginalSize = UBound(OriginalArray) + 1
    Call Show_Statistics(True, OriginalArray)
End Sub

'this sub is used to see if the file just loaded is a file which is
'stored by this programm and is already coded/compressed
Private Sub Split_Header_From_File(ByteArray() As Byte)
    Dim HeadText As String
    Dim X As Integer
    Dim CodecsUsed As Integer
    Dim Version As String
    Dim InPos As Long
    If UBound(ByteArray) < 3 Then Exit Sub  'original file to small
    InPos = UBound(ByteArray)
    For X = 0 To 2
        HeadText = HeadText & Chr(ByteArray(InPos))
        InPos = InPos - 1
    Next
    If HeadText <> "UCF" Then Exit Sub  'this is an un-UCF'ed file

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -