외로운 Nova의 작업실
Assembly 언어 공부 - 33(전치 암호화 구현) 본문
안녕하세요, 간단한 문자열을 넣으면 전치 암호화를 해주는 프로그램을 만들었다보니 기록을 하기위해 작성합니다.
- 코드
;-----------------INCLUDE-------------------------
;
include c:\assembly\irvine32.inc
includelib c:\assembly\irvine32.lib
includelib c:\assembly\kernel32.lib
includelib c:\assembly\user32.lib
;-----------------------------------------------
.data
plaintext BYTE 50 DUP(?)
los DWORD 0
.code
main PROC
mov ecx, 64h
call readPlainText
L2 :call EncryptPlainText
call outputCypherText
call crlf
LOOP L2
main ENDP
readPlainText PROC
push ecx
mov edx, OFFSET plaintext
mov ecx, SIZEOF plaintext
call ReadString
mov los, eax
pop ecx
ret
readPlainText ENDP
EncryptPlainText PROC
push ecx
mov ecx, 64h
L1 :mov eax, los
call RandomRange
mov ebx, eax
mov eax, los
call RandomRange
mov edx, eax
mov al, plaintext[ebx]
mov ah, plaintext[edx]
mov plaintext[ebx], ah
mov plaintext[edx], al
LOOP L1
pop ecx
ret
EncryptPlainText ENDP
outputCypherText PROC
push ecx
mov edx, OFFSET plaintext
call WriteString
pop ecx
ret
outputCypherText ENDP
END main
- 작동 방식
처음에 문자열을 입력하면 문자열의 위치를 랜덤하게 바꾸어 100개를 출력해줍니다. 아래는 작동 예제입니다.
'Programming > Assembly' 카테고리의 다른 글
Assembly 언어 공부 - 35(메크로) (0) | 2022.10.29 |
---|---|
Assembly 언어 공부 - 34(구조체) (0) | 2022.10.29 |
Assembly 언어 공부 - 31(스트링 프리미티브 명령어) (0) | 2022.10.10 |
Assembly 언어 공부 - 30(INVOKE,ADDR,PROC,PROTO 디렉티브) (0) | 2022.10.03 |
Assembly 언어 공부 - 29(ENTER과 LEAVE 명령어, LOCAL 명령어) (0) | 2022.10.02 |
Comments