程序集加密类型1字体加密算法

时间:2017-05-23 01:23:49

标签: c assembly encryption

我试图读入并加密文件的内容。使用以下代码加密函数,我将其从C转换为汇编:

 unsigned short int r;
 unsigned short int c1 =52845;
 unsigned short int c2 = 22719:

unsigned char eencrypt(char plain) unsigned char plain;
   {    unsigned char cipher; 

     cipher = (plain ^ (r >> 8));  
     r = (cipher + r) * c1 + c2;    
 return cipher; 
 } 

到目前为止我的代码是:

    .data
    file db "File.txt",0
    buffersize = 512
    buffer db ?
    filehandle dw ?
    cipher db ?
    r db ?
    c1 dw 52845 
    c2 dw 22719
    RSP db ? 


    .code
    org 100h

    start:

    mov ax,@DATA 
    mov ds, ax

    mov ah,3dh          ;open text file
    mov al,0
    mov dx, offset file
    int 21h
    mov filehandle,ax

    mov ah, 3fh         ;read file
    mov bx, filehandle
    mov cx, buffersize
    mov dx, offset buffer
    int 21h
    cmp ax,0


    mov dx, offset buffer 
    mov ah, 09h
    int 21h

    call Encrypt

    Encrypt: 

           mov DWORD PTR [RSP - 4], 0
           movzx EAX, BYTE PTR [cipher]
           movzx ECX, WORD PTR [r]
           sar ECX, 8
           xor EAX, ECX
           mov DL, AL
           mov BYTE PTR [RSP - 5], DL
           movzx EAX, BYTE PTR [cipher]           ;# cipher
           movzx ECX, WORD PTR [r]
           add EAX, ECX
           movzx ECX, WORD PTR [c1]               ;#c1
           imul EAX, ECX
           movzx ECX, WORD PTR [c2]               ;#c2
           add EAX, ECX
           mov SI, AX
           mov WORD PTR [r], SI
           movzx EAX, BYTE PTR [RSP - 5] 

           mov ax, 4c00h
           int 21h

    end start

我无法理解如何将文件中的文本发送到加密功能,然后将新的加密代码打印到屏幕上。

0 个答案:

没有答案