Guest User

Untitled

a guest
Feb 16th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.31 KB | None | 0 0
  1. member()
  2.  
  3. map
  4. end
  5.  
  6. include('jpwbfish.inc'),once
  7.  
  8.  
  9. P_Init cstring('<088h,06ah,03fh,024h,0d3h,08h,0a3h,085h,02eh,08ah,019h>' & |
  10. '<013h,044h,073h,070h,03h,022h,038h,09h,0a4h,0d0h,031h>' & |
  11. '<09fh,029h,098h,0fah,02eh,08h,089h,06ch,04eh,0ech,0e6h>' & |
  12. '<021h,028h,045h,077h,013h,0d0h,038h,0cfh,066h,054h,0beh>' & |
  13. '<06ch,0ch,0e9h,034h,0b7h,029h,0ach,0c0h,0ddh,050h,07ch>' & |
  14. '<0c9h,0b5h,0d5h,084h,03fh,017h,09h,047h,0b5h,0d9h,0d5h>' & |
  15. '<016h,092h,01bh,0fbh,079h,089h>')
  16. _P_Init ulong,dim(SUBKEYS),over(P_Init)
  17.  
  18.  
  19. SB_Init cstring('<0a6h,00bh,031h,0d1h,0ach,0b5h,0dfh,098h,0dbh,072h,0fdh,02fh>' & |
  20. '<0b7h,0dfh,01ah,0d0h,0edh,0afh,0e1h,0b8h,096h,07eh,026h,06ah>' & |
  21. '<045h,090h,07ch,0bah,099h,07fh,02ch,0f1h,047h,099h,0a1h,024h>' & |
  22. '<0f7h,06ch,091h,0b3h,0e2h,0f2h,001h,008h,016h,0fch,08eh,085h>' & |
  23. '<0d8h,020h,069h,063h,069h,04eh,057h,071h,0a3h,0feh,058h,0a4h>' & |
  24. '<07eh,03dh,093h,0f4h,08fh,074h,095h,00dh,058h,0b6h,08eh,072h>' & |
  25. '<058h,0cdh,08bh,071h,0eeh,04ah,015h,082h,01dh,0a4h,054h,07bh>' & |
  26. '<0b5h,059h,05ah,0c2h,039h,0d5h,030h,09ch,013h,060h,0f2h,02ah>' & |
  27. '<023h,0b0h,0d1h,0c5h,0f0h,085h,060h,028h,018h,079h,041h,0cah>' & |
  28. '<0efh,038h,0dbh,0b8h,0b0h,0dch,079h,08eh,00eh,018h,03ah,060h>' & |
  29. '<08bh,00eh,09eh,06ch,03eh,08ah,01eh,0b0h,0c1h,077h,015h,0d7h>' & |
  30. '<027h,04bh,031h,0bdh,0dah,02fh,0afh,078h,060h,05ch,060h,055h>' & |
  31. '<0f3h,025h,055h,0e6h,094h,0abh,055h,0aah,062h,098h,048h,057h>' & |
  32. '<040h,014h,0e8h,063h,06ah,039h,0cah,055h,0b6h,010h,0abh,02ah>' & |
  33. '<034h,05ch,0cch,0b4h,0ceh,0e8h,041h,011h,0afh,086h,054h,0a1h>' & |
  34. '<093h,0e9h,072h,07ch,011h,014h,0eeh,0b3h,02ah,0bch,06fh,063h>' & |
  35. '<05dh,0c5h,0a9h,02bh,0f6h,031h,018h,074h,016h,03eh,05ch,0ceh>' & |
  36. '<01eh,093h,087h,09bh,033h,0bah,0d6h,0afh,05ch,0cfh,024h,06ch>' & |
  37. '<081h,053h,032h,07ah,077h,086h,095h,028h,098h,048h,08fh,03bh>' & |
  38. '<0afh,0b9h,04bh,06bh,01bh,0e8h,0bfh,0c4h,093h,021h,028h,066h>' & |
  39. '<0cch,009h,0d8h,061h,091h,0a9h,021h,0fbh,060h,0ach,07ch,048h>' & |
  40. '<032h,080h,0ech,05dh,05dh,05dh,084h,0efh,0b1h,075h,085h,0e9h>' & |
  41. '<002h,023h,026h,0dch,088h,01bh,065h,0ebh,081h,03eh,089h,023h>' & |
  42. '<0c5h,0ach,096h,0d3h,0f3h,06fh,06dh,00fh,039h,042h,0f4h,083h>' & |
  43. '<082h,044h,00bh,02eh,004h,020h,084h,0a4h,04ah,0f0h,0c8h,069h>' & |
  44. '<05eh,09bh,01fh,09eh,042h,068h,0c6h,021h,09ah,06ch,0e9h,0f6h>' & |
  45. '<061h,09ch,00ch,067h,0f0h,088h,0d3h,0abh,0d2h,0a0h,051h,06ah>' & |
  46. '<068h,02fh,054h,0d8h,028h,0a7h,00fh,096h,0a3h,033h,051h,0abh>' & |
  47. '<06ch,00bh,0efh,06eh,0e4h,03bh,07ah,013h,050h,0f0h,03bh,0bah>' & |
  48. '<098h,02ah,0fbh,07eh,01dh,065h,0f1h,0a1h,076h,001h,0afh,039h>' & |
  49. '<03eh,059h,0cah,066h,088h,00eh,043h,082h,019h,086h,0eeh,08ch>' & |
  50. '<0b4h,09fh,06fh,045h,0c3h,0a5h,084h,07dh,0beh,05eh,08bh,03bh>' & |
  51. '<0d8h,075h,06fh,0e0h,073h,020h,0c1h,085h,09fh,044h,01ah,040h>' & |
  52. '<0a6h,06ah,0c1h,056h,062h,0aah,0d3h,04eh,006h,077h,03fh,036h>' & |
  53. '<072h,0dfh,0feh,01bh,03dh,002h,09bh,042h,024h,0d7h,0d0h,037h>' & |
  54. '<048h,012h,00ah,0d0h,0d3h,0eah,00fh,0dbh,09bh,0c0h,0f1h,049h>' & |
  55. '<0c9h,072h,053h,007h,07bh,01bh,099h,080h,0d8h,079h,0d4h,025h>' & |
  56. '<0f7h,0deh,0e8h,0f6h,01ah,050h,0feh,0e3h,03bh,04ch,079h,0b6h>' & |
  57. '<0bdh,0e0h,06ch,097h,0bah,006h,0c0h,004h,0b6h,04fh,0a9h,0c1h>' & |
  58. '<0c4h,060h,09fh,040h,0c2h,09eh,05ch,05eh,063h,024h,06ah,019h>' & |
  59. '<0afh,06fh,0fbh,068h,0b5h,053h,06ch,03eh,0ebh,0b2h,039h,013h>' & |
  60. '<06fh,0ech,052h,03bh,01fh,051h,0fch,06dh,02ch,095h,030h,09bh>' & |
  61. '<044h,045h,081h,0cch,009h,0bdh,05eh,0afh,004h,0d0h,0e3h,0beh>' & |
  62. '<0fdh,04ah,033h,0deh,007h,028h,00fh,066h,0b3h,04bh,02eh,019h>' & |
  63. '<057h,0a8h,0cbh,0c0h,00fh,074h,0c8h,045h,039h,05fh,00bh,0d2h>' & |
  64. '<0dbh,0fbh,0d3h,0b9h,0bdh,0c0h,079h,055h,00ah,032h,060h,01ah>' & |
  65. '<0c6h,000h,0a1h,0d6h,079h,072h,02ch,040h,0feh,025h,09fh,067h>' & |
  66. '<0cch,0a3h,01fh,0fbh,0f8h,0e9h,0a5h,08eh,0f8h,022h,032h,0dbh>' & |
  67. '<0dfh,016h,075h,03ch,015h,06bh,061h,0fdh,0c8h,01eh,050h,02fh>' & |
  68. '<0abh,052h,005h,0adh,0fah,0b5h,03dh,032h,060h,087h,023h,0fdh>' & |
  69. '<048h,07bh,031h,053h,082h,0dfh,000h,03eh,0bbh,057h,05ch,09eh>' & |
  70. '<0a0h,08ch,06fh,0cah,02eh,056h,087h,01ah,0dbh,069h,017h,0dfh>' & |
  71. '<0f6h,0a8h,042h,0d5h,0c3h,0ffh,07eh,028h,0c6h,032h,067h,0ach>' & |
  72. '<073h,055h,04fh,08ch,0b0h,027h,05bh,069h,0c8h,058h,0cah,0bbh>' & |
  73. '<05dh,0a3h,0ffh,0e1h,0a0h,011h,0f0h,0b8h,098h,03dh,0fah,010h>' & |
  74. '<0b8h,083h,021h,0fdh,06ch,0b5h,0fch,04ah,05bh,0d3h,0d1h,02dh>' & |
  75. '<079h,0e4h,053h,09ah,065h,045h,0f8h,0b6h,0bch,049h,08eh,0d2h>' & |
  76. '<090h,097h,0fbh,04bh,0dah,0f2h,0ddh,0e1h,033h,07eh,0cbh,0a4h>' & |
  77. '<041h,013h,0fbh,062h,0e8h,0c6h,0e4h,0ceh,0dah,0cah,020h,0efh>' & |
  78. '<001h,04ch,077h,036h,0feh,09eh,07eh,0d0h,0b4h,01fh,0f1h,02bh>' & |
  79. '<04dh,0dah,0dbh,095h,098h,091h,090h,0aeh,071h,08eh,0adh,0eah>' & |
  80. '<0a0h,0d5h,093h,06bh,0d0h,0d1h,08eh,0d0h,0e0h,025h,0c7h,0afh>' & |
  81. '<02fh,05bh,03ch,08eh,0b7h,094h,075h,08eh,0fbh,0e2h,0f6h,08fh>' & |
  82. '<064h,02bh,012h,0f2h,012h,0b8h,088h,088h,01ch,0f0h,00dh,090h>' & |
  83. '<0a0h,05eh,0adh,04fh,01ch,0c3h,08fh,068h,091h,0f1h,0cfh,0d1h>' & |
  84. '<0adh,0c1h,0a8h,0b3h,018h,022h,02fh,02fh,077h,017h,00eh,0beh>' & |
  85. '<0feh,02dh,075h,0eah,0a1h,01fh,002h,08bh,00fh,0cch,0a0h,0e5h>' & |
  86. '<0e8h,074h,06fh,0b5h,0d6h,0f3h,0ach,018h,099h,0e2h,089h,0ceh>' & |
  87. '<0e0h,04fh,0a8h,0b4h,0b7h,0e0h,013h,0fdh,081h,03bh,0c4h,07ch>' & |
  88. '<0d9h,0a8h,0adh,0d2h,066h,0a2h,05fh,016h,005h,077h,095h,080h>' & |
  89. '<014h,073h,0cch,093h,077h,014h,01ah,021h,065h,020h,0adh,0e6h>' & |
  90. '<086h,0fah,0b5h,077h,0f5h,042h,054h,0c7h,0cfh,035h,09dh,0fbh>' & |
  91. '<00ch,0afh,0cdh,0ebh,0a0h,089h,03eh,07bh,0d3h,01bh,041h,0d6h>' & |
  92. '<049h,07eh,01eh,0aeh,02dh,00eh,025h,000h,05eh,0b3h,071h,020h>' & |
  93. '<0bbh,000h,068h,022h,0afh,0e0h,0b8h,057h,09bh,036h,064h,024h>' & |
  94. '<01eh,0b9h,009h,0f0h,01dh,091h,063h,055h,0aah,0a6h,0dfh,059h>' & |
  95. '<089h,043h,0c1h,078h,07fh,053h,05ah,0d9h,0a2h,05bh,07dh,020h>' & |
  96. '<0c5h,0b9h,0e5h,002h,076h,003h,026h,083h,0a9h,0cfh,095h,062h>' & |
  97. '<068h,019h,0c8h,011h,041h,04ah,073h,04eh,0cah,02dh,047h,0b3h>' & |
  98. '<04ah,0a9h,014h,07bh,052h,000h,051h,01bh,015h,029h,053h,09ah>' & |
  99. '<03fh,057h,00fh,0d6h,0e4h,0c6h,09bh,0bch,076h,0a4h,060h,02bh>' & |
  100. '<000h,074h,0e6h,081h,0b5h,06fh,0bah,008h,01fh,0e9h,01bh,057h>' & |
  101. '<06bh,0ech,096h,0f2h,015h,0d9h,00dh,02ah,021h,065h,063h,0b6h>' & |
  102. '<0b6h,0f9h,0b9h,0e7h,02eh,005h,034h,0ffh,064h,056h,085h,0c5h>' & |
  103. '<05dh,02dh,0b0h,053h,0a1h,08fh,09fh,0a9h,099h,047h,0bah,008h>' & |
  104. '<06ah,007h,085h,06eh,0e9h,070h,07ah,04bh,044h,029h,0b3h,0b5h>' & |
  105. '<02eh,009h,075h,0dbh,023h,026h,019h,0c4h,0b0h,0a6h,06eh,0adh>' & |
  106. '<07dh,0dfh,0a7h,049h,0b8h,060h,0eeh,09ch,066h,0b2h,0edh,08fh>' & |
  107. '<071h,08ch,0aah,0ech,0ffh,017h,09ah,069h,06ch,052h,064h,056h>' & |
  108. '<0e1h,09eh,0b1h,0c2h,0a5h,002h,036h,019h,029h,04ch,009h,075h>' & |
  109. '<040h,013h,059h,0a0h,03eh,03ah,018h,0e4h,09ah,098h,054h,03fh>' & |
  110. '<065h,09dh,042h,05bh,0d6h,0e4h,08fh,06bh,0d6h,03fh,0f7h,099h>' & |
  111. '<007h,09ch,0d2h,0a1h,0f5h,030h,0e8h,0efh,0e6h,038h,02dh,04dh>' & |
  112. '<0c1h,05dh,025h,0f0h,086h,020h,0ddh,04ch,026h,0ebh,070h,084h>' & |
  113. '<0c6h,0e9h,082h,063h,05eh,0cch,01eh,002h,03fh,06bh,068h,009h>' & |
  114. '<0c9h,0efh,0bah,03eh,014h,018h,097h,03ch,0a1h,070h,06ah,06bh>' & |
  115. '<084h,035h,07fh,068h,086h,0e2h,0a0h,052h,005h,053h,09ch,0b7h>' & |
  116. '<037h,007h,050h,0aah,01ch,084h,007h,03eh,05ch,0aeh,0deh,07fh>' & |
  117. '<0ech,044h,07dh,08eh,0b8h,0f2h,016h,057h,037h,0dah,03ah,0b0h>' & |
  118. '<00dh,00ch,050h,0f0h,004h,01fh,01ch,0f0h,0ffh,0b3h,000h,002h>' & |
  119. '<01ah,0f5h,00ch,0aeh,0b2h,074h,0b5h,03ch,058h,07ah,083h,025h>' & |
  120. '<0bdh,021h,009h,0dch,0f9h,013h,091h,0d1h,0f6h,02fh,0a9h,07ch>' & |
  121. '<073h,047h,032h,094h,001h,047h,0f5h,022h,081h,0e5h,0e5h,03ah>' & |
  122. '<0dch,0dah,0c2h,037h,034h,076h,0b5h,0c8h,0a7h,0ddh,0f3h,09ah>' & |
  123. '<046h,061h,044h,0a9h,00eh,003h,0d0h,00fh,03eh,0c7h,0c8h,0ech>' & |
  124. '<041h,01eh,075h,0a4h,099h,0cdh,038h,0e2h,02fh,00eh,0eah,03bh>' & |
  125. '<0a1h,0bbh,080h,032h,031h,0b3h,03eh,018h,038h,08bh,054h,04eh>' & |
  126. '<008h,0b9h,06dh,04fh,003h,00dh,042h,06fh,0bfh,004h,00ah,0f6h>' & |
  127. '<090h,012h,0b8h,02ch,079h,07ch,097h,024h,072h,0b0h,079h,056h>' & |
  128. '<0afh,089h,0afh,0bch,01fh,077h,09ah,0deh,010h,008h,093h,0d9h>' & |
  129. '<012h,0aeh,08bh,0b3h,02eh,03fh,0cfh,0dch,01fh,072h,012h,055h>' & |
  130. '<024h,071h,06bh,02eh,0e6h,0ddh,01ah,050h,087h,0cdh,084h,09fh>' & |
  131. '<018h,047h,058h,07ah,017h,0dah,008h,074h,0bch,09ah,09fh,0bch>' & |
  132. '<08ch,07dh,04bh,0e9h,03ah,0ech,07ah,0ech,0fah,01dh,085h,0dbh>' & |
  133. '<066h,043h,009h,063h,0d2h,0c3h,064h,0c4h,047h,018h,01ch,0efh>' & |
  134. '<008h,0d9h,015h,032h,037h,03bh,043h,0ddh,016h,0bah,0c2h,024h>' & |
  135. '<043h,04dh,0a1h,012h,051h,0c4h,065h,02ah,002h,000h,094h,050h>' & |
  136. '<0ddh,0e4h,03ah,013h,09eh,0f8h,0dfh,071h,055h,04eh,031h,010h>' & |
  137. '<0d6h,077h,0ach,081h,09bh,019h,011h,05fh,0f1h,056h,035h,004h>' & |
  138. '<06bh,0c7h,0a3h,0d7h,03bh,018h,011h,03ch,009h,0a5h,024h,059h>' & |
  139. '<0edh,0e6h,08fh,0f2h,0fah,0fbh,0f1h,097h,02ch,0bfh,0bah,09eh>' & |
  140. '<06eh,03ch,015h,01eh,070h,045h,0e3h,086h,0b1h,06fh,0e9h,0eah>' & |
  141. '<00ah,05eh,00eh,086h,0b3h,02ah,03eh,05ah,01ch,0e7h,01fh,077h>' & |
  142. '<0fah,006h,03dh,04eh,0b9h,0dch,065h,029h,00fh,01dh,0e7h,099h>' & |
  143. '<0d6h,089h,03eh,080h,025h,0c8h,066h,052h,078h,0c9h,04ch,02eh>' & |
  144. '<06ah,0b3h,010h,09ch,0bah,00eh,015h,0c6h,078h,0eah,0e2h,094h>' & |
  145. '<053h,03ch,0fch,0a5h,0f4h,02dh,00ah,01eh,0a7h,04eh,0f7h,0f2h>' & |
  146. '<03dh,02bh,01dh,036h,00fh,026h,039h,019h,060h,079h,0c2h,019h>' & |
  147. '<008h,0a7h,023h,052h,0b6h,012h,013h,0f7h,06eh,0feh,0adh,0ebh>' & |
  148. '<066h,01fh,0c3h,0eah,095h,045h,0bch,0e3h,083h,0c8h,07bh,0a6h>' & |
  149. '<0d1h,037h,07fh,0b1h,028h,0ffh,08ch,001h,0efh,0ddh,032h,0c3h>' & |
  150. '<0a5h,05ah,06ch,0beh,085h,021h,058h,065h,002h,098h,0abh,068h>' & |
  151. '<00fh,0a5h,0ceh,0eeh,03bh,095h,02fh,0dbh,0adh,07dh,0efh,02ah>' & |
  152. '<084h,02fh,06eh,05bh,028h,0b6h,021h,015h,070h,061h,007h,029h>' & |
  153. '<075h,047h,0ddh,0ech,010h,015h,09fh,061h,030h,0a8h,0cch,013h>' & |
  154. '<096h,0bdh,061h,0ebh,01eh,0feh,034h,003h,0cfh,063h,003h,0aah>' & |
  155. '<090h,05ch,073h,0b5h,039h,0a2h,070h,04ch,00bh,09eh,09eh,0d5h>' & |
  156. '<014h,0deh,0aah,0cbh,0bch,086h,0cch,0eeh,0a7h,02ch,062h,060h>' & |
  157. '<0abh,05ch,0abh,09ch,06eh,084h,0f3h,0b2h,0afh,01eh,08bh,064h>' & |
  158. '<0cah,0f0h,0bdh,019h,0b9h,069h,023h,0a0h,050h,0bbh,05ah,065h>' & |
  159. '<032h,05ah,068h,040h,0b3h,0b4h,02ah,03ch,0d5h,0e9h,09eh,031h>' & |
  160. '<0f7h,0b8h,021h,0c0h,019h,00bh,054h,09bh,099h,0a0h,05fh,087h>' & |
  161. '<07eh,099h,0f7h,095h,0a8h,07dh,03dh,062h,09ah,088h,037h,0f8h>' & |
  162. '<077h,02dh,0e3h,097h,05fh,093h,0edh,011h,081h,012h,068h,016h>' & |
  163. '<029h,088h,035h,00eh,0d6h,01fh,0e6h,0c7h,0a1h,0dfh,0deh,096h>' & |
  164. '<099h,0bah,058h,078h,0a5h,084h,0f5h,057h,063h,072h,022h,01bh>' & |
  165. '<0ffh,0c3h,083h,09bh,096h,046h,0c2h,01ah,0ebh,00ah,0b3h,0cdh>' & |
  166. '<054h,030h,02eh,053h,0e4h,048h,0d9h,08fh,028h,031h,0bch,06dh>' & |
  167. '<0efh,0f2h,0ebh,058h,0eah,0ffh,0c6h,034h,061h,0edh,028h,0feh>' & |
  168. '<073h,03ch,07ch,0eeh,0d9h,014h,04ah,05dh,0e3h,0b7h,064h,0e8h>' & |
  169. '<014h,05dh,010h,042h,0e0h,013h,03eh,020h,0b6h,0e2h,0eeh,045h>' & |
  170. '<0eah,0abh,0aah,0a3h,015h,04fh,06ch,0dbh,0d0h,04fh,0cbh,0fah>' & |
  171. '<042h,0f4h,042h,0c7h,0b5h,0bbh,06ah,0efh,01dh,03bh,04fh,065h>' & |
  172. '<005h,021h,0cdh,041h,09eh,079h,01eh,0d8h,0c7h,04dh,085h,086h>' & |
  173. '<06ah,047h,04bh,0e4h,050h,062h,081h,03dh,0f2h,0a1h,062h,0cfh>' & |
  174. '<046h,026h,08dh,05bh,0a0h,083h,088h,0fch,0a3h,0b6h,0c7h,0c1h>' & |
  175. '<0c3h,024h,015h,07fh,092h,074h,0cbh,069h,00bh,08ah,084h,047h>' & |
  176. '<085h,0b2h,092h,056h,000h,0bfh,05bh,009h,09dh,048h,019h,0adh>' & |
  177. '<074h,0b1h,062h,014h,000h,00eh,082h,023h,02ah,08dh,042h,058h>' & |
  178. '<0eah,0f5h,055h,00ch,03eh,0f4h,0adh,01dh,061h,070h,03fh,023h>' & |
  179. '<092h,0f0h,072h,033h,041h,07eh,093h,08dh,0f1h,0ech,05fh,0d6h>' & |
  180. '<0dbh,03bh,022h,06ch,059h,037h,0deh,07ch,060h,074h,0eeh,0cbh>' & |
  181. '<0a7h,0f2h,085h,040h,06eh,032h,077h,0ceh,084h,080h,007h,0a6h>' & |
  182. '<09eh,050h,0f8h,019h,055h,0d8h,0efh,0e8h,035h,097h,0d9h,061h>' & |
  183. '<0aah,0a7h,069h,0a9h,0c2h,006h,00ch,0c5h,0fch,0abh,004h,05ah>' & |
  184. '<0dch,0cah,00bh,080h,02eh,07ah,044h,09eh,084h,034h,045h,0c3h>' & |
  185. '<005h,067h,0d5h,0fdh,0c9h,09eh,01eh,00eh,0d3h,0dbh,073h,0dbh>' & |
  186. '<0cdh,088h,055h,010h,079h,0dah,05fh,067h,040h,043h,067h,0e3h>' & |
  187. '<065h,034h,0c4h,0c5h,0d8h,038h,03eh,071h,09eh,0f8h,028h,03dh>' & |
  188. '<020h,0ffh,06dh,0f1h,0e7h,021h,03eh,015h,04ah,03dh,0b0h,08fh>' & |
  189. '<02bh,09fh,0e3h,0e6h,0f7h,0adh,083h,0dbh,068h,05ah,03dh,0e9h>' & |
  190. '<0f7h,040h,081h,094h,01ch,026h,04ch,0f6h,034h,029h,069h,094h>' & |
  191. '<0f7h,020h,015h,041h,0f7h,0d4h,002h,076h,02eh,06bh,0f4h,0bch>' & |
  192. '<068h,000h,0a2h,0d4h,071h,024h,008h,0d4h,06ah,0f4h,020h,033h>' & |
  193. '<0b7h,0d4h,0b7h,043h,0afh,061h,000h,050h,02eh,0f6h,039h,01eh>' & |
  194. '<046h,045h,024h,097h,074h,04fh,021h,014h,040h,088h,08bh,0bfh>' & |
  195. '<01dh,0fch,095h,04dh,0afh,091h,0b5h,096h,0d3h,0ddh,0f4h,070h>' & |
  196. '<045h,02fh,0a0h,066h,0ech,009h,0bch,0bfh,085h,097h,0bdh,003h>' & |
  197. '<0d0h,06dh,0ach,07fh,004h,085h,0cbh,031h,0b3h,027h,0ebh,096h>' & |
  198. '<041h,039h,0fdh,055h,0e6h,047h,025h,0dah,09ah,00ah,0cah,0abh>' & |
  199. '<025h,078h,050h,028h,0f4h,029h,004h,053h,0dah,086h,02ch,00ah>' & |
  200. '<0fbh,06dh,0b6h,0e9h,062h,014h,0dch,068h,000h,069h,048h,0d7h>' & |
  201. '<0a4h,0c0h,00eh,068h,0eeh,08dh,0a1h,027h,0a2h,0feh,03fh,04fh>' & |
  202. '<08ch,0adh,087h,0e8h,006h,0e0h,08ch,0b5h,0b6h,0d6h,0f4h,07ah>' & |
  203. '<07ch,01eh,0ceh,0aah,0ech,05fh,037h,0d3h,099h,0a3h,078h,0ceh>' & |
  204. '<042h,02ah,06bh,040h,035h,09eh,0feh,020h,0b9h,085h,0f3h,0d9h>' & |
  205. '<0abh,0d7h,039h,0eeh,08bh,04eh,012h,03bh,0f7h,0fah,0c9h,01dh>' & |
  206. '<056h,018h,06dh,04bh,031h,066h,0a3h,026h,0b2h,097h,0e3h,0eah>' & |
  207. '<074h,0fah,06eh,03ah,032h,043h,05bh,0ddh,0f7h,0e7h,041h,068h>' & |
  208. '<0fbh,020h,078h,0cah,04eh,0f5h,00ah,0fbh,097h,0b3h,0feh,0d8h>' & |
  209. '<0ach,056h,040h,045h,027h,095h,048h,0bah,03ah,03ah,053h,055h>' & |
  210. '<087h,08dh,083h,020h,0b7h,0a9h,06bh,0feh,04bh,095h,096h,0d0h>' & |
  211. '<0bch,067h,0a8h,055h,058h,09ah,015h,0a1h,063h,029h,0a9h,0cch>' & |
  212. '<033h,0dbh,0e1h,099h,056h,04ah,02ah,0a6h,0f9h,025h,031h,03fh>' & |
  213. '<01ch,07eh,0f4h,05eh,07ch,031h,029h,090h,002h,0e8h,0f8h,0fdh>' & |
  214. '<070h,02fh,027h,004h,05ch,015h,0bbh,080h,0e3h,02ch,028h,005h>' & |
  215. '<048h,015h,0c1h,095h,022h,06dh,0c6h,0e4h,03fh,013h,0c1h,048h>' & |
  216. '<0dch,086h,00fh,0c7h,0eeh,0c9h,0f9h,007h,00fh,01fh,004h,041h>' & |
  217. '<0a4h,079h,047h,040h,017h,06eh,088h,05dh,0ebh,051h,05fh,032h>' & |
  218. '<0d1h,0c0h,09bh,0d5h,08fh,0c1h,0bch,0f2h,064h,035h,011h,041h>' & |
  219. '<034h,078h,07bh,025h,060h,09ch,02ah,060h,0a3h,0e8h,0f8h,0dfh>' & |
  220. '<01bh,06ch,063h,01fh,0c2h,0b4h,012h,00eh,09eh,032h,0e1h,002h>' & |
  221. '<0d1h,04fh,066h,0afh,015h,081h,0d1h,0cah,0e0h,095h,023h,06bh>' & |
  222. '<0e1h,092h,03eh,033h,062h,00bh,024h,03bh,022h,0b9h,0beh,0eeh>' & |
  223. '<00eh,0a2h,0b2h,085h,099h,00dh,0bah,0e6h,08ch,00ch,072h,0deh>' & |
  224. '<028h,0f7h,0a2h,02dh,045h,078h,012h,0d0h,0fdh,094h,0b7h,095h>' & |
  225. '<062h,008h,07dh,064h,0f0h,0f5h,0cch,0e7h,06fh,0a3h,049h,054h>' & |
  226. '<0fah,048h,07dh,087h,027h,0fdh,09dh,0c3h,01eh,08dh,03eh,0f3h>' & |
  227. '<041h,063h,047h,00ah,074h,0ffh,02eh,099h,0abh,06eh,06fh,03ah>' & |
  228. '<037h,0fdh,0f8h,0f4h,060h,0dch,012h,0a8h,0f8h,0ddh,0ebh,0a1h>' & |
  229. '<04ch,0e1h,01bh,099h,00dh,06bh,06eh,0dbh,010h,055h,07bh,0c6h>' & |
  230. '<037h,02ch,067h,06dh,03bh,0d4h,065h,027h,004h,0e8h,0d0h,0dch>' & |
  231. '<0c7h,00dh,029h,0f1h,0a3h,0ffh,000h,0cch,092h,00fh,039h,0b5h>' & |
  232. '<00bh,0edh,00fh,069h,0fbh,09fh,07bh,066h,09ch,07dh,0dbh,0ceh>' & |
  233. '<00bh,0cfh,091h,0a0h,0a3h,05eh,015h,0d9h,088h,02fh,013h,0bbh>' & |
  234. '<024h,0adh,05bh,051h,0bfh,079h,094h,07bh,0ebh,0d6h,03bh,076h>' & |
  235. '<0b3h,02eh,039h,037h,079h,059h,011h,0cch,097h,0e2h,026h,080h>' & |
  236. '<02dh,031h,02eh,0f4h,0a7h,0adh,042h,068h,03bh,02bh,06ah,0c6h>' & |
  237. '<0cch,04ch,075h,012h,01ch,0f1h,02eh,078h,037h,042h,012h,06ah>' & |
  238. '<0e7h,051h,092h,0b7h,0e6h,0bbh,0a1h,006h,050h,063h,0fbh,04bh>' & |
  239. '<018h,010h,06bh,01ah,0fah,0edh,0cah,011h,0d8h,0bdh,025h,03dh>' & |
  240. '<0c9h,0c3h,0e1h,0e2h,059h,016h,042h,044h,086h,013h,012h,00ah>' & |
  241. '<06eh,0ech,00ch,0d9h,02ah,0eah,0abh,0d5h,04eh,067h,0afh,064h>' & |
  242. '<05fh,0a8h,086h,0dah,088h,0e9h,0bfh,0beh,0feh,0c3h,0e4h,064h>' & |
  243. '<057h,080h,0bch,09dh,086h,0c0h,0f7h,0f0h,0f8h,07bh,078h,060h>' & |
  244. '<04dh,060h,003h,060h,046h,083h,0fdh,0d1h,0b0h,01fh,038h,0f6h>' & |
  245. '<004h,0aeh,045h,077h,0cch,0fch,036h,0d7h,033h,06bh,042h,083h>' & |
  246. '<071h,0abh,01eh,0f0h,087h,041h,080h,0b0h,05fh,05eh,000h,03ch>' & |
  247. '<0beh,057h,0a0h,077h,024h,0aeh,0e8h,0bdh,099h,042h,046h,055h>' & |
  248. '<061h,02eh,058h,0bfh,08fh,0f4h,058h,04eh,0a2h,0fdh,0ddh,0f2h>' & |
  249. '<038h,0efh,074h,0f4h,0c2h,0bdh,089h,087h,0c3h,0f9h,066h,053h>' & |
  250. '<074h,08eh,0b3h,0c8h,055h,0f2h,075h,0b4h,0b9h,0d9h,0fch,046h>' & |
  251. '<061h,026h,0ebh,07ah,084h,0dfh,01dh,08bh,079h,00eh,06ah,084h>' & |
  252. '<0e2h,095h,05fh,091h,08eh,059h,06eh,046h,070h,057h,0b4h,020h>' & |
  253. '<091h,055h,0d5h,08ch,04ch,0deh,002h,0c9h,0e1h,0ach,00bh,0b9h>' & |
  254. '<0d0h,005h,082h,0bbh,048h,062h,0a8h,011h,09eh,0a9h,074h,075h>' & |
  255. '<0b6h,019h,07fh,0b7h,009h,0dch,0a9h,0e0h,0a1h,009h,02dh,066h>' & |
  256. '<033h,046h,032h,0c4h,002h,01fh,05ah,0e8h,08ch,0beh,0f0h,009h>' & |
  257. '<025h,0a0h,099h,04ah,010h,0feh,06eh,01dh,01dh,03dh,0b9h,01ah>' & |
  258. '<0dfh,0a4h,0a5h,00bh,00fh,0f2h,086h,0a1h,069h,0f1h,068h,028h>' & |
  259. '<083h,0dah,0b7h,0dch,0feh,006h,039h,057h,09bh,0ceh,0e2h,0a1h>' & |
  260. '<052h,07fh,0cdh,04fh,001h,05eh,011h,050h,0fah,083h,006h,0a7h>' & |
  261. '<0c4h,0b5h,002h,0a0h,027h,0d0h,0e6h,00dh,027h,08ch,0f8h,09ah>' & |
  262. '<041h,086h,03fh,077h,006h,04ch,060h,0c3h,0b5h,006h,0a8h,061h>' & |
  263. '<028h,07ah,017h,0f0h,0e0h,086h,0f5h,0c0h,0aah,058h,060h,000h>' & |
  264. '<062h,07dh,0dch,030h,0d7h,09eh,0e6h,011h,063h,0eah,038h,023h>' & |
  265. '<094h,0ddh,0c2h,053h,034h,016h,0c2h,0c2h,056h,0eeh,0cbh,0bbh>' & |
  266. '<0deh,0b6h,0bch,090h,0a1h,07dh,0fch,0ebh,076h,01dh,059h,0ceh>' & |
  267. '<009h,0e4h,005h,06fh,088h,001h,07ch,04bh,03dh,00ah,072h,039h>' & |
  268. '<024h,07ch,092h,07ch,05fh,072h,0e3h,086h,0b9h,09dh,04dh,072h>' & |
  269. '<0b4h,05bh,0c1h,01ah,0fch,0b8h,09eh,0d3h,078h,055h,054h,0edh>' & |
  270. '<0b5h,0a5h,0fch,008h,0d3h,07ch,03dh,0d8h,0c4h,00fh,0adh,04dh>' & |
  271. '<05eh,0efh,050h,01eh,0f8h,0e6h,061h,0b1h,0d9h,014h,085h,0a2h>' & |
  272. '<03ch,013h,051h,06ch,0e7h,0c7h,0d5h,06fh,0c4h,04eh,0e1h,056h>' & |
  273. '<0ceh,0bfh,02ah,036h,037h,0c8h,0c6h,0ddh,034h,032h,09ah,0d7h>' & |
  274. '<012h,082h,063h,092h,08eh,0fah,00eh,067h,0e0h,000h,060h,040h>' & |
  275. '<037h,0ceh,039h,03ah,0cfh,0f5h,0fah,0d3h,037h,077h,0c2h,0abh>' & |
  276. '<01bh,02dh,0c5h,05ah,09eh,067h,0b0h,05ch,042h,037h,0a3h,04fh>' & |
  277. '<040h,027h,082h,0d3h,0beh,09bh,0bch,099h,09dh,08eh,011h,0d5h>' & |
  278. '<015h,073h,00fh,0bfh,07eh,01ch,02dh,0d6h,07bh,0c4h,000h,0c7h>' & |
  279. '<06bh,01bh,08ch,0b7h,045h,090h,0a1h,021h,0beh,0b1h,06eh,0b2h>' & |
  280. '<0b4h,06eh,036h,06ah,02fh,0abh,048h,057h,079h,06eh,094h,0bch>' & |
  281. '<0d2h,076h,0a3h,0c6h,0c8h,0c2h,049h,065h,0eeh,0f8h,00fh,053h>' & |
  282. '<07dh,0deh,08dh,046h,01dh,00ah,073h,0d5h,0c6h,04dh,0d0h,04ch>' & |
  283. '<0dbh,0bbh,039h,029h,050h,046h,0bah,0a9h,0e8h,026h,095h,0ach>' & |
  284. '<004h,0e3h,05eh,0beh,0f0h,0d5h,0fah,0a1h,09ah,051h,02dh,06ah>' & |
  285. '<0e2h,08ch,0efh,063h,022h,0eeh,086h,09ah,0b8h,0c2h,089h,0c0h>' & |
  286. '<0f6h,02eh,024h,043h,0aah,003h,01eh,0a5h,0a4h,0d0h,0f2h,09ch>' & |
  287. '<0bah,061h,0c0h,083h,04dh,06ah,0e9h,09bh,050h,015h,0e5h,08fh>' & |
  288. '<0d6h,05bh,064h,0bah,0f9h,0a2h,026h,028h,0e1h,03ah,03ah,0a7h>' & |
  289. '<086h,095h,0a9h,04bh,0e9h,062h,055h,0efh,0d3h,0efh,02fh,0c7h>' & |
  290. '<0dah,0f7h,052h,0f7h,069h,06fh,004h,03fh,059h,00ah,0fah,077h>' & |
  291. '<015h,0a9h,0e4h,080h,001h,086h,0b0h,087h,0adh,0e6h,009h,09bh>' & |
  292. '<093h,0e5h,03eh,03bh,05ah,0fdh,090h,0e9h,097h,0d7h,034h,09eh>' & |
  293. '<0d9h,0b7h,0f0h,02ch,051h,08bh,02bh,002h,03ah,0ach,0d5h,096h>' & |
  294. '<07dh,0a6h,07dh,001h,0d6h,03eh,0cfh,0d1h,028h,02dh,07dh,07ch>' & |
  295. '<0cfh,025h,09fh,01fh,09bh,0b8h,0f2h,0adh,072h,0b4h,0d6h,05ah>' & |
  296. '<04ch,0f5h,088h,05ah,071h,0ach,029h,0e0h,0e6h,0a5h,019h,0e0h>' & |
  297. '<0fdh,0ach,0b0h,047h,09bh,0fah,093h,0edh,08dh,0c4h,0d3h,0e8h>' & |
  298. '<0cch,057h,03bh,028h,029h,066h,0d5h,0f8h,028h,02eh,013h,079h>' & |
  299. '<091h,001h,05fh,078h,055h,060h,075h,0edh,044h,00eh,096h,0f7h>' & |
  300. '<08ch,05eh,0d3h,0e3h,0d4h,06dh,005h,015h,0bah,06dh,0f4h,088h>' & |
  301. '<025h,061h,0a1h,003h,0bdh,0f0h,064h,005h,015h,09eh,0ebh,0c3h>' & |
  302. '<0a2h,057h,090h,03ch,0ech,01ah,027h,097h,02ah,007h,03ah,0a9h>' & |
  303. '<09bh,06dh,03fh,01bh,0f5h,021h,063h,01eh,0fbh,066h,09ch,0f5h>' & |
  304. '<019h,0f3h,0dch,026h,028h,0d9h,033h,075h,0f5h,0fdh,055h,0b1h>' & |
  305. '<082h,034h,056h,003h,0bbh,03ch,0bah,08ah,011h,077h,051h,028h>' & |
  306. '<0f8h,0d9h,00ah,0c2h,067h,051h,0cch,0abh,05fh,092h,0adh,0cch>' & |
  307. '<051h,017h,0e8h,04dh,08eh,0dch,030h,038h,062h,058h,09dh,037h>' & |
  308. '<091h,0f9h,020h,093h,0c2h,090h,07ah,0eah,0ceh,07bh,03eh,0fbh>' & |
  309. '<064h,0ceh,021h,051h,032h,0beh,04fh,077h,07eh,0e3h,0b6h,0a8h>' & |
  310. '<046h,03dh,029h,0c3h,069h,053h,0deh,048h,080h,0e6h,013h,064h>' & |
  311. '<010h,008h,0aeh,0a2h,024h,0b2h,06dh,0ddh,0fdh,02dh,085h,069h>' & |
  312. '<066h,021h,007h,009h,00ah,046h,09ah,0b3h,0ddh,0c0h,045h,064h>' & |
  313. '<0cfh,0deh,06ch,058h,0aeh,0c8h,020h,01ch,0ddh,0f7h,0beh,05bh>' & |
  314. '<040h,08dh,058h,01bh,07fh,001h,0d2h,0cch,0bbh,0e3h,0b4h,06bh>' & |
  315. '<07eh,06ah,0a2h,0ddh,045h,0ffh,059h,03ah,044h,00ah,035h,03eh>' & |
  316. '<0d5h,0cdh,0b4h,0bch,0a8h,0ceh,0eah,072h,0bbh,084h,064h,0fah>' & |
  317. '<0aeh,012h,066h,08dh,047h,06fh,03ch,0bfh,063h,0e4h,09bh,0d2h>' & |
  318. '<09eh,05dh,02fh,054h,01bh,077h,0c2h,0aeh,070h,063h,04eh,0f6h>' & |
  319. '<08dh,00dh,00eh,074h,057h,013h,05bh,0e7h,071h,016h,072h,0f8h>' & |
  320. '<05dh,07dh,053h,0afh,008h,0cbh,040h,040h,0cch,0e2h,0b4h,04eh>' & |
  321. '<06ah,046h,0d2h,034h,084h,0afh,015h,001h,028h,004h,0b0h,0e1h>' & |
  322. '<01dh,03ah,098h,095h,0b4h,09fh,0b8h,006h,048h,0a0h,06eh,0ceh>' & |
  323. '<082h,03bh,03fh,06fh,082h,0abh,020h,035h,04bh,01dh,01ah,001h>' & |
  324. '<0f8h,027h,072h,027h,0b1h,060h,015h,061h,0dch,03fh,093h,0e7h>' & |
  325. '<02bh,079h,03ah,0bbh,0bdh,025h,045h,034h,0e1h,039h,088h,0a0h>' & |
  326. '<04bh,079h,0ceh,051h,0b7h,0c9h,032h,02fh,0c9h,0bah,01fh,0a0h>' & |
  327. '<07eh,0c8h,01ch,0e0h,0f6h,0d1h,0c7h,0bch,0c3h,011h,001h,0cfh>' & |
  328. '<0c7h,0aah,0e8h,0a1h,049h,087h,090h,01ah,09ah,0bdh,04fh,0d4h>' & |
  329. '<0cbh,0deh,0dah,0d0h,038h,0dah,00ah,0d5h,02ah,0c3h,039h,003h>' & |
  330. '<067h,036h,091h,0c6h,07ch,031h,0f9h,08dh,04fh,02bh,0b1h,0e0h>' & |
  331. '<0b7h,059h,09eh,0f7h,03ah,0bbh,0f5h,043h,0ffh,019h,0d5h,0f2h>' & |
  332. '<09ch,045h,0d9h,027h,02ch,022h,097h,0bfh,02ah,0fch,0e6h,015h>' & |
  333. '<071h,0fch,091h,00fh,025h,015h,094h,09bh,061h,093h,0e5h,0fah>' & |
  334. '<0ebh,09ch,0b6h,0ceh,059h,064h,0a8h,0c2h,0d1h,0a8h,0bah,012h>' & |
  335. '<05eh,007h,0c1h,0b6h,00ch,06ah,005h,0e3h,065h,050h,0d2h,010h>' & |
  336. '<042h,0a4h,003h,0cbh,00eh,06eh,0ech,0e0h,03bh,0dbh,098h,016h>' & |
  337. '<0beh,0a0h,098h,04ch,064h,0e9h,078h,032h,032h,095h,01fh,09fh>' & |
  338. '<0dfh,092h,0d3h,0e0h,02bh,034h,0a0h,0d3h,01eh,0f2h,071h,089h>' & |
  339. '<041h,074h,00ah,01bh,08ch,034h,0a3h,04bh,020h,071h,0beh,0c5h>' & |
  340. '<0d8h,032h,076h,0c3h,08dh,09fh,035h,0dfh,02eh,02fh,099h,09bh>' & |
  341. '<047h,06fh,00bh,0e6h,01dh,0f1h,0e3h,00fh,054h,0dah,04ch,0e5h>' & |
  342. '<091h,0d8h,0dah,01eh,0cfh,079h,062h,0ceh,06fh,07eh,03eh,0cdh>' & |
  343. '<066h,0b1h,018h,016h,005h,01dh,02ch,0fdh,0c5h,0d2h,08fh,084h>' & |
  344. '<099h,022h,0fbh,0f6h,057h,0f3h,023h,0f5h,023h,076h,032h,0a6h>' & |
  345. '<031h,035h,0a8h,093h,002h,0cdh,0cch,056h,062h,081h,0f0h,0ach>' & |
  346. '<0b5h,0ebh,075h,05ah,097h,036h,016h,06eh,0cch,073h,0d2h,088h>' & |
  347. '<092h,062h,096h,0deh,0d0h,049h,0b9h,081h,01bh,090h,050h,04ch>' & |
  348. '<014h,056h,0c6h,071h,0bdh,0c7h,0c6h,0e6h,00ah,014h,07ah,032h>' & |
  349. '<006h,0d0h,0e1h,045h,09ah,07bh,0f2h,0c3h,0fdh,053h,0aah,0c9h>' & |
  350. '<000h,00fh,0a8h,062h,0e2h,0bfh,025h,0bbh,0f6h,0d2h,0bdh,035h>' & |
  351. '<005h,069h,012h,071h,022h,002h,004h,0b2h,07ch,0cfh,0cbh,0b6h>' & |
  352. '<02bh,09ch,076h,0cdh,0c0h,03eh,011h,053h,0d3h,0e3h,040h,016h>' & |
  353. '<060h,0bdh,0abh,038h,0f0h,0adh,047h,025h,09ch,020h,038h,0bah>' & |
  354. '<076h,0ceh,046h,0f7h,0c5h,0a1h,0afh,077h,060h,060h,075h,020h>' & |
  355. '<04eh,0feh,0cbh,085h,0d8h,08dh,0e8h,08ah,0b0h,0f9h,0aah,07ah>' & |
  356. '<07eh,0aah,0f9h,04ch,05ch,0c2h,048h,019h,08ch,08ah,0fbh,002h>' & |
  357. '<0e4h,06ah,0c3h,001h,0f9h,0e1h,0ebh,0d6h,069h,0f8h,0d4h,090h>' & |
  358. '<0a0h,0deh,05ch,0a6h,02dh,025h,009h,03fh,09fh,0e6h,008h,0c2h>' & |
  359. '<032h,061h,04eh,0b7h,05bh,0e2h,077h,0ceh,0e3h,0dfh,08fh,057h>' & |
  360. '<0e6h,072h,0c3h,03ah>')
  361. _SB_Init ulong,dim(S_BOXES, ENTRIES),over(SB_Init)
  362.  
  363.  
  364. BlowFish.Construct procedure
  365.  
  366. code
  367.  
  368.  
  369. BlowFish.Destruct procedure
  370.  
  371. code
  372.  
  373.  
  374. BlowFish.Set_Pwd procedure(long pKey, long dwKeyLen)
  375.  
  376. code
  377. ? assert(pKey)
  378. if pKey
  379. if (dwKeyLen > 0) and (dwKeyLen <= MAX_PKEY)
  380. self._Reset()
  381. self.Initialise(pKey, dwKeyLen)
  382. return true
  383. end
  384. end
  385. return false
  386.  
  387.  
  388. BlowFish._Encrypt procedure(*cstring szData, long dwBytes)
  389.  
  390. code
  391. return self._Encrypt(address(szData), dwBytes)
  392.  
  393.  
  394. BlowFish._Encrypt procedure(long pData, long dwBytes)
  395.  
  396. nBlocks long,auto
  397. i long,auto
  398. pWork long,auto
  399. pWork2 long,auto
  400.  
  401. code
  402. if dwBytes % 8
  403. return false.
  404.  
  405. nBlocks = bshift(dwBytes, -3)
  406. pWork = pData
  407.  
  408. loop i = 1 to nBlocks
  409. pWork2 = pWork + 4
  410. self.BF_Encrypt(pWork, pWork2)
  411. pWork += 8
  412. end
  413. return true
  414.  
  415.  
  416. BlowFish.Decrypt procedure(*cstring szData, long dwBytes)
  417.  
  418. code
  419. return self.Decrypt(address(szData), dwBytes)
  420.  
  421.  
  422. BlowFish.Decrypt procedure(long pData, long dwBytes)
  423.  
  424. nBlocks long,auto
  425. i long,auto
  426. pWork long,auto
  427. pWork2 long,auto
  428.  
  429. code
  430. if dwBytes % 8
  431. return false.
  432.  
  433. nBlocks = bshift(dwBytes, -3)
  434. pWork = pData
  435.  
  436. loop i = 1 to nBlocks
  437. pWork2 = pWork + 4
  438. self.BF_Decrypt(pWork, pWork2)
  439. pWork += 8
  440. end
  441. return true
  442.  
  443.  
  444. BlowFish._Reset procedure
  445.  
  446. i long,auto
  447. j long,auto
  448.  
  449. code
  450. loop i = 1 to SUBKEYS
  451. self.P[i] = _P_Init[i].
  452.  
  453. loop j = 1 to S_BOXES
  454. loop i = 1 to ENTRIES
  455. self.S[j, i] = _SB_Init[j, i].
  456. end
  457.  
  458.  
  459. BlowFish.F procedure(ulong x, byte bLittleEndian)
  460.  
  461. a long,auto
  462. b long,auto
  463. c long,auto
  464. d long,auto
  465.  
  466. code
  467. if bLittleEndian
  468. d = band(x, 0FFh); x = bshift(x, -8)
  469. c = band(x, 0FFh); x = bshift(x, -8)
  470. b = band(x, 0FFh); x = bshift(x, -8)
  471. a = band(x, 0FFh)
  472. else
  473. a = band(x, 0FFh); x = bshift(x, -8)
  474. b = band(x, 0FFh); x = bshift(x, -8)
  475. c = band(x, 0FFh); x = bshift(x, -8)
  476. d = band(x, 0FFh)
  477. end
  478. return bxor(self.S[1, a + 1] + self.S[2, b + 1], self.S[3, c + 1]) + self.S[4, d + 1]
  479.  
  480.  
  481. BlowFish.Initialise procedure(long pKey, long dwKeyLen)
  482.  
  483. xL ulong,auto
  484. xR ulong,auto
  485. _data ulong,auto
  486. bKey &byte
  487. j long
  488. k long,auto
  489. i long,auto
  490.  
  491. code
  492. loop i = 1 to SUBKEYS
  493. _data = 0
  494. loop k = 1 to 4
  495. bKey &= (pKey + j)
  496. _data = bor(bshift(_data, 8), bKey) ! band(bKey, 0ffh))
  497. j += 1
  498. if j >= dwKeyLen
  499. j = 0.
  500. end
  501. self.P[i] = bxor(self.P[i], _data)
  502. end
  503.  
  504. xL = 0
  505. xR = 0
  506.  
  507. loop i = 1 to SUBKEYS
  508. self.BF_Encrypt(address(xL), address(xR))
  509. self.P[i] = xL
  510. self.P[i + 1] = xR
  511. i += 1
  512. end
  513. loop i = 1 to 4
  514. loop j = 1 to 256
  515. self.BF_Encrypt(address(xL), address(xR))
  516. self.S[i, j] = xL
  517. self.S[i, j + 1] = xR
  518. j += 1
  519. end
  520. end
  521.  
  522.  
  523. BlowFish.BF_Encrypt procedure(long pxL, long pxR)
  524.  
  525. xL &ulong
  526. xR &ulong
  527. xT ulong,auto
  528. i long,auto
  529.  
  530. code
  531. xL &= (pxL)
  532. xR &= (pxR)
  533.  
  534. loop i = 1 to 16
  535. xL = bxor(xL, self.P[i])
  536. xR = bxor(self.F(xL), xR)
  537. xT = xL; xL = xR
  538. xR = xT
  539. end
  540. xT = xL; xL = xR
  541. xR = xT
  542.  
  543. xR = bxor(xR, self.P[17])
  544. xL = bxor(xL, self.P[18])
  545.  
  546.  
  547. BlowFish.BF_Decrypt procedure(long pxL, long pxR)
  548.  
  549. xL &ulong
  550. xR &ulong
  551. xT ulong,auto
  552. i long,auto
  553.  
  554. code
  555. xL &= (pxL)
  556. xR &= (pxR)
  557.  
  558. loop i = 18 to 3 by -1
  559. xL = bxor(xL, self.P[i])
  560. xR = bxor(self.F(xL), xR)
  561. xT = xL; xL = xR
  562. xR = xT
  563. end
  564. xT = xL; xL = xR
  565. xR = xT
  566.  
  567. xR = bxor(xR, self.P[2])
  568. xL = bxor(xL, self.P[1])
  569.  
  570.  
  571.  
  572. JPWBlowFish.Construct procedure()
  573. code
  574. self.Key32 = 'aSDfijsdfSDFjdsfiljJFIEJ43534rrF'
  575. self._Key32 = self.Key32
  576. if parent.Set_Pwd(address(self._Key32), len(self._Key32))
  577. end
  578. return
  579.  
  580. JPWBlowFish.Encode procedure()
  581. code
  582. if self.Key32 <> self._Key32
  583. self._Key32 = self.Key32
  584. if parent.Set_Pwd(address(self._Key32), len(self._Key32))
  585. return parent._Encrypt (self.BinData, self.Size)
  586. end
  587. else
  588. return parent._Encrypt (self.BinData, self.Size)
  589. end
  590.  
  591. JPWBlowFish.Decode procedure()
  592. RetVar byte
  593. code
  594. if self.Key32 <> self._Key32
  595. self._Key32 = self.Key32
  596. if parent.Set_Pwd(address(self._Key32), len(self._Key32))
  597. RetVar = parent.Decrypt (self.BinData, self.Size)
  598. end
  599. else
  600. RetVar = parent.Decrypt (self.BinData, self.Size)
  601. end
  602. return RetVar
  603.  
  604. JPWBlowFish.Encode procedure(string pKey, *string pData)
  605. X long,auto
  606. RetVar byte
  607. _Size long,auto
  608. code
  609. if ((pKey) and (pData))
  610. self.Key32 = pKey
  611. _Size = len(clip(pData))
  612. self.Size = _Size + (8-(_Size%8))
  613. pData = pData[1:_Size] & '<0h,0h,0h,0h,0h,0h,0h,0h>'
  614. self.BinData = address(pData)
  615. RetVar = self.Encode()
  616. end
  617. return RetVar
  618.  
  619. JPWBlowFish.Decode procedure(string pKey, *string pData)
  620. RetVar byte
  621. FirstNull long
  622. code
  623. if ((pKey) and (pData))
  624. self.Key32 = pKey
  625. !self.Size = len(clip(pData)) ! GJ commented 14/12/04
  626. self.BinData = address(pData)
  627. self.Decode()
  628. FirstNull = instring('<0h>', pData, 1, 1)
  629. if FirstNull > 1
  630. pData = pData[1:(FirstNull-1)]
  631. end
  632. end
  633. return RetVar
  634.  
  635. JPWBlowfish.Encode1024 procedure(string pKey, string pData)
  636. ReturnVar string(1024)
  637. EncryptString string(1008)
  638. DataLen string(8)
  639. RetVar byte
  640. _Size long,auto
  641. code
  642. if ((pKey) and (pData))
  643. EncryptString = pData
  644. self.Key32 = pKey
  645. _Size = len(clip(EncryptString))
  646. if _Size > len(EncryptString) - 8
  647. _Size = len(EncryptString) - 8
  648. end
  649. self.Size = _Size + (8-(_Size%8))
  650. DataLen = self.Size
  651. EncryptString = EncryptString[1:_Size] & '<0h,0h,0h,0h,0h,0h,0h,0h>'
  652. self.BinData = address(EncryptString)
  653. RetVar = self.Encode()
  654. ReturnVar = EncryptString
  655. self.Size = 8
  656. self.BinData = address(DataLen)
  657. RetVar = self.Encode()
  658. ReturnVar = DataLen & EncryptString
  659. end
  660. return ReturnVar
  661.  
  662. JPWBlowfish.Decode1024 procedure(string pKey, string pData)
  663. code
  664. pData = self.Decode2048 (pKey, pData)
  665. return clip(pData)
  666.  
  667. JPWBlowfish.Encode2048 procedure(string pKey, string pData)
  668. ReturnVar string(2048)
  669. EncryptString string(2024)
  670. DataLen string(8)
  671. RetVar byte
  672. _Size long,auto
  673. code
  674. if ((pKey) and (pData))
  675. EncryptString = pData
  676. self.Key32 = pKey
  677. _Size = len(clip(EncryptString))
  678. if _Size > len(EncryptString) - 8
  679. _Size = len(EncryptString) - 8
  680. end
  681. self.Size = _Size + (8-(_Size%8))
  682. DataLen = self.Size
  683. EncryptString = EncryptString[1:_Size] & '<0h,0h,0h,0h,0h,0h,0h,0h>'
  684. self.BinData = address(EncryptString)
  685. RetVar = self.Encode()
  686. ReturnVar = EncryptString
  687. self.Size = 8
  688. self.BinData = address(DataLen)
  689. RetVar = self.Encode()
  690. ReturnVar = DataLen & EncryptString
  691. end
  692. return ReturnVar
  693.  
  694. JPWBlowfish.Decode2048 procedure(string pKey, string pData)
  695. DataLen string(8)
  696. FirstNull long
  697. code
  698. if ((pKey) and (len(pData) > 8))
  699. self.Key32 = pKey
  700. self.Size = 8
  701. DataLen = pData[1:8]
  702. self.BinData = address(DataLen)
  703. self.Decode()
  704. self.Size = DataLen
  705. pData = pData[9 : len(pData)]
  706. self.BinData = address(pData)
  707. self.Decode()
  708. FirstNull = instring('<0h>', pData, 1, 1)
  709. if FirstNull > 1
  710. pData = pData[1:(FirstNull-1)]
  711. end
  712. end
  713. return clip(pData)
  714.  
  715. JPWBlowFish.EncodeHEX procedure()
  716. HexDigitsUp string('0123456789ABCDEF')
  717. ASCIIstring &cstring
  718. i long,auto
  719. bchar &byte
  720. code
  721. self.Encode()
  722. ASCIIstring &= new(cstring((self.size * 2) + 1))
  723. loop i = 0 to self.size -1
  724. bchar &= (self.BinData + i)
  725. ASCIIstring[(i*2)+1] = HexDigitsUp[bshift(bchar, -4) + 1]
  726. ASCIIstring[(i*2)+2] = HexDigitsUp[band(bchar, 0FH) + 1]
  727. end
  728. poke(self.BinData,ASCIIstring)
  729. dispose(ASCIIstring)
  730. return
  731.  
  732. JPWBlowFish.DecodeHEX procedure()
  733. HexDigitsUp string('0123456789ABCDEF')
  734. ASCIIstring &cstring
  735. HexData &cstring
  736. i long,auto
  737. num long,auto
  738. bchar &byte
  739. code
  740. HexData &= (self.BinData)
  741. self.size = len(HexData)/2
  742. ASCIIstring &= new(cstring((self.size) + 1))
  743. loop i = 0 to self.size -1
  744. bchar &= (self.BinData + i*2)
  745. num = ((instring(chr(bchar),HexDigitsUp) - 1) * 16)
  746. bchar &= (self.BinData + i*2 + 1)
  747. num += (instring(chr(bchar),HexDigitsUp) - 1)
  748. ASCIIstring[i+1] = chr(num)
  749. end
  750. poke(self.BinData,ASCIIstring)
  751. dispose(ASCIIstring)
  752. self.Decode()
  753. return
  754.  
  755. JPWBlowFish.Clip procedure(*string pIn)
  756. X long
  757. code
  758. X = instring('<0h>', pIn, 1, 1)
  759. if X > 1
  760. pIn = pIn[1 : (X-1)]
  761. end
  762. return
  763.  
  764. JPWBlowFish.IP_Send procedure(string pKey1, string pKey2, file pFile, string pData)
  765. RetVal string(2048),auto
  766. code
  767. if ( (pKey1) and (pKey2) and (pData) )
  768. RetVal = self.Encode1024 (pKey1, pData)
  769. RetVal = send(pFile, 'IPEXEC ' & clip(RetVal))
  770. RetVal = self.Decode1024 (pKey2, RetVal)
  771. end
  772. return RetVal
Add Comment
Please, Sign In to add comment