Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. INCLUDE irvine32.inc
  2.  
  3. BUFMAX = 128 ; maximum buffer size
  4.  
  5.  
  6. .data
  7.  
  8. key BYTE BUFMAX+1 DUP(0)
  9. keySize DWORD ?
  10.  
  11. mes BYTE BUFMAX+1 DUP(0)
  12. mesSize DWORD ?
  13.  
  14.  
  15. msgWel BYTE "Welcome! This program encrypts and decrypts a message using any key and message!", 0DH, 0AH, 0
  16. msgEn BYTE "Please enter the Encryption Key: ", 0
  17. msgMe BYTE "Please enter the Message you want Encrypted: ", 0
  18. msgFin BYTE "The Encrypted Message is: ", 0
  19. msgUn BYTE "The Decrypted Message is: ", 0
  20. msgAny BYTE "Press any key to continue...", 0DH, 0AH, 0
  21.  
  22. .code
  23. main PROC
  24.  
  25. call Input
  26.  
  27. call Encryption
  28.  
  29. mov EDX, offset msgFin
  30. call WriteString
  31.  
  32. mov EDX, offset mes
  33. call WriteString
  34.  
  35. call Encryption
  36.  
  37. mov EDX, offset msgUn
  38. call WriteString
  39.  
  40. mov EDX, offset mes
  41. call WriteString
  42.  
  43. call Crlf
  44.  
  45. mov EDX, offset msgAny
  46. call WriteString
  47. call ReadInt
  48.  
  49. exit
  50.  
  51.  
  52. main ENDP
  53.  
  54.  
  55. Input PROC
  56. pushad ; save 32-bit registers
  57.  
  58. mov EDX, offset msgWel ; display a prompt
  59. call WriteString
  60.  
  61. mov EDX, offset msgEn ; display a prompt
  62. call WriteString
  63.  
  64. mov ECX, BUFMAX ; maximum character count
  65.  
  66. mov EDX, offset key ; point to the key
  67. call ReadString ; input the string
  68.  
  69. mov keySize, EAX ; save the length for key
  70.  
  71.  
  72.  
  73. mov EDX, offset msgMe ; display a prompt
  74. call WriteString
  75.  
  76. mov ECX, BUFMAX ; maximum character count
  77.  
  78. mov EDX, offset mes ; point to the key
  79. call ReadString ; input the string
  80.  
  81. mov mesSize, EAX ; save the length for message
  82.  
  83. call Crlf
  84. popad
  85. ret
  86.  
  87. Input ENDP
  88.  
  89.  
  90.  
  91. Encryption PROC
  92. pushad
  93. mov ECX, mesSize ; loop counter
  94. mov ESI, 0
  95. mov EAX, 0 ; index 0 in message
  96.  
  97. L1:
  98. mov AL, key[EAX]
  99. xor mes[ESI], AL ; translate a byte
  100. inc ESI
  101. inc EAX
  102.  
  103. cmp keySize, EAX
  104. jb below
  105.  
  106. loop L1
  107.  
  108. below:
  109. mov EAX, 0
  110. loop L1
  111.  
  112.  
  113. call crlf
  114. popad
  115. ret
  116.  
  117. Encryption ENDP
  118.  
  119.  
  120. END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement