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

📄 加密算法之blowfish算法.txt

📁 多个加解密程序的说明与源程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:
loc_401146:     
    MOV      EDI,[EAX] 
    ADD      EAX,4 
    MOV      [ECX],EDI 
    ADD      ECX,4 
    DEC      EDX 
    JNZ      loc_401146 
    CMP      EAX,offset sbox1+1000h 
    JL      loc_401141 

;初始化p盒 
;第一步:原p盒与PWD逐项异或 
     
    MOV      EDX,PWD 
    MOV      EDI,offset pbox 
    XOR      EAX,EAX 
    SUB      EDI,ESI 
    MOV      pbox_num18,12h 
loc_401173:     
    XOR      ECX,ECX 
    MOV      pbox_num4,04 
loc_40117D:     
    XOR      EBX,EBX 
    MOV      BL,[EAX+EDX] 
    SHL      ECX,08 
    OR      ECX,EBX 
    INC      EAX 
    CMP      EAX,len_PWD 
    JL      loc_40118E 
    XOR      EAX,EAX 
loc_40118E: 
    MOV      EBX,pbox_num4 
    DEC      EBX 
    MOV      pbox_num4,EBX 
    JNZ      loc_40117D 
    MOV      EBX,[EDI+ESI] 
    ADD      ESI,4 
    XOR      EBX,ECX 
    MOV      ECX,pbox_num18 
    MOV      [ESI-04],EBX 
    DEC      ECX 
    MOV      pbox_num18,ECX 
    JNZ      loc_401173 

;用连续的blowfish算法填充p盒 
    MOV      EBX,offset key 
    XOR      EAX,EAX 
    MOV      BFLOW,EAX 
    MOV      BFHIGH,EAX 
    MOV      ESI,EBX 
    MOV      EDI,09 
loc_4011C4: 
    LEA      EAX,BFLOW 
    LEA      ECX,BFHIGH 
    invoke  BlowFish_En,ECX,EAX 
    MOV      EAX,BFHIGH 
    MOV      ECX,BFLOW 
    MOV      [ESI],EAX 
    MOV      [ESI+04],ECX 
    ADD      ESI,8 
    DEC      EDI 
    JNZ      loc_4011C4 

;用连续的blowfish算法填充s盒 
    LEA      ESI,[EBX+4Ch] 
    MOV      snum,04        ;4个s盒。 
loc_4011F2:     
    MOV      EDI,80H        ;每个盒填充80h=128次(每次填充两个数)。 
loc_4011F7: 
    LEA      ECX,BFLOW 
    LEA      EDX,BFHIGH 
    invoke  BlowFish_En,EDX,ECX 
    MOV      ECX,BFHIGH 
    MOV      EDX,BFLOW 
    MOV      [ESI-04],ECX 
    MOV      [ESI],EDX 
    ADD      ESI,8 
    DEC      EDI 
    JNZ      loc_4011F7 
    DEC      snum 
    JNZ      loc_4011F2 
    RET    
      BlowFish_Init endp 

      ;消息处理函数 
        _ProcDlgMain proc uses ebx edi esi edx ecx,hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD 
        mov    eax,wMsg 
        .if    eax==WM_CLOSE 
                invoke  EndDialog,hWnd,NULL 
        .elseif eax==WM_COMMAND 
                mov  eax,wParam 
                and  eax,0ffffh 
                .if    eax==IDGEN 
;如果你直接用ComputerID产生序列号,从这里到mov MYBFLOW,ebx一段应该屏蔽 
        invoke  GetDlgItemText,hWnd,Edit1,offset szID,17 
        xor    ebx,ebx 
        xor    eax,eax 
        mov    esi,offset szID 
        mov    ecx,8 
    @@33: 
         
        or      ebx,eax 
        xor    eax,eax 
        lodsb 
        cmp    eax,39h 
        jle    @@3 
        sub    eax,7 
    @@3: 
        sub    eax,30h 
         
        shl    ebx,4 
        loop    @@33 
        or      ebx,eax 
        mov    MYBFHIGH,ebx 

        mov    esi,offset szID+8 
        mov    ecx,8 
        xor    eax,eax 
        xor    ebx,ebx 
    @@44: 
        or      ebx,eax 
        lodsb 
        cmp    eax,39h 
        jle    @@4 
        sub    eax,7 
    @@4: 
        sub    eax,30h 
        shl    ebx,4 
        loop    @@44 
        or      ebx,eax 
        mov    MYBFLOW,ebx 
;………………………………………………………………………………………………………… 
;如果你直接用ComputerID产生序列号,这里后面的所有语句你都应将其激活 
;        invoke  BlowFish_Init,offset PW_1,23 
;        invoke  BlowFish_En,offset data1_p,offset data1_p+4 
;        MOV    EAX,BFHIGH 
;        MOV    MYBFHIGH,EAX 
;        MOV    EAX,BFLOW 
;        MOV    MYBFLOW,EAX 
        invoke  BlowFish_Init,offset PW_2,18 
        invoke  BlowFish_En,offset MYBFHIGH,offset MYBFLOW 
        MOV    EAX,BFHIGH 
        MOV    MYBFHIGH,EAX 
        MOV    EAX,BFLOW 
        MOV    MYBFLOW,EAX 
        invoke  BlowFish_Init,offset PW_3,14 
        invoke  BlowFish_En,offset MYBFHIGH,offset MYBFLOW 

        mov    ebx,BFHIGH 
        mov    eax,ebx 
        mov    edi,offset szText 
        mov    ecx,8 
    @@12: 
        mov    eax,ebx 
        shl    ebx,4 
        shr    eax,28 
        cmp    eax,9 
        jle    @@11 
        add    eax,7 
    @@11:      add    eax,30h 
        and    eax,0ffh 
        stosb 
        loop    @@12 

        mov    ebx,BFLOW 
        mov    eax,ebx 
        mov    edi,offset szText+8 
        mov    ecx,8 
    @@22: 
        mov    eax,ebx 
        shl    ebx,4 
        shr    eax,28 
        cmp    eax,9 
        jle    @@21 
        add    eax,7 
    @@21:      add    eax,30h 
        and    eax,0ffh 
        stosb 
        loop    @@22 

        xor    eax,eax 
        mov    [edi],eax 
        invoke  SetDlgItemText,hWnd,Edit2,offset szText 
        mov    eax,FALSE 
                        ret 
                .elseif eax==IDCLOSE 
                        invoke  EndDialog,hWnd,NULL 
                .endif 
        .else 
                mov    eax,FALSE 
                ret 
        .endif 
        mov    eax,TRUE 
        ret 

_ProcDlgMain endp 

        ;主程序 
start:  
        invoke  InitCommonControls 
        invoke  GetModuleHandle,NULL 
        mov    hInstance,eax 
        invoke  DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,0 
        invoke  ExitProcess,NULL 
end    start 

end    

;资源文件:rsrc.rc 
;#include          <Resource.h> 
;#define          IDGEN      10 
;#define       DLG_MAIN  100 
;#define            EDIT1      11 
;#define            EDIT2      12 
; 
;DLG_MAIN    DIALOGEX    100,150,250,60 
;STYLE        DS_MODALFRAME|WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME 
;CAPTION        "BlowFish's CrackMe KenGen By 夜月[CCG]  " 
;FONT        9,"宋体" 
; 
;BEGIN 
;CONTROL        " ID:",-1,"Static",SS_LEFT,10,13,40,17 
;CONTROL        "SN:"  ,-2,"Static",SS_CENTER,10,40,20,17 
;CONTROL        ""    ,11,"Edit",ES_LEFT,30,13,150,10 
;CONTROL        ""    ,12,"Edit",ES_LEFT,30,40,150,10 
;CONTROL        "GENERATE",IDGEN,"BUTTON",BS_PUSHBUTTON,200,11,40,15 
;CONTROL        "EXIT",IDCLOSE,"BUTTON",BS_PUSHBUTTON,200,36,41,14 
;END  

⌨️ 快捷键说明

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