;加密程序 (Encrypt.asm)
include irvine32.inc
KEY=239 ;1~255之間的任何一個值
BUFMAX=128 ;緩衝區最大容量
.data
sPrompt BYTE "Enter a plain text:",0
sEncrypt BYTE "Cipher text :",0
sDecrypt BYTE "Decrypted :",0
buffer BYTE BUFMAX+1 DUP(0)
bufSize DWORD ?
.code
main PROC
call InputTheString ;輸入明文
call TranslateBuffer ;加密緩衝區
mov edx,OFFSET sEncrypt ;顯示加密信息
call DisplayMessage ;
call TranslateBuffer ;解密緩衝區
mov edx,OFFSET sDecrypt ;
call DisplayMessage ;顯示解密信息
call WaitMsg ;
exit ;
main ENDP
;--------------------------------------------
InputTheString proc
;
;提示用戶輸入一個純文本字符串
;保存字符串和他的長度
;接受:無
;返回:無
;--------------------------------------------
pushad ;保存32位寄存器
mov edx,OFFSET sPrompt ;顯示提示
call WriteString ;
mov ecx,BUFMAX ;字符計數器最大值
mov edx,OFFSET buffer ;指向緩衝區
call ReadString ;輸入字符串
mov bufSize,eax ;保存長度
call Crlf
popad
ret
InputTheString ENDP
;--------------------------------------------
DisplayMessage PROC
;顯示加密或者解密信息
;接受:EDX指向消息
;返回:無
;--------------------------------------------
pushad
call WriteString
mov edx,OFFSET buffer ;顯示緩衝區
call WriteString ;
call Crlf ;
call Crlf ;
popad ;
ret ;函數返回
DisplayMessage ENDP ;
;--------------------------------------------
TranslateBuffer PROC
;
;字符串的每一個字節都與祕鑰字節進行異或
;實現轉換
;接受:無
;返回:無
;---------------------------------------------
pushad
mov ecx,bufSize ;循環計數器
mov esi,0; ;緩衝區索引賦初值0
L1:
xor buffer[esi],KEY ;轉換一個字符
inc esi ;指向下一個字節
loop L1
popad
ret
TranslateBuffer ENDP
END main
023.使用異或操作實現對稱性加密以及解密
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.