Advertisement
Guest User

DES

a guest
Nov 20th, 2013
1,570
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
J 3.25 KB | None | 0 0
  1. P =: , (] , <:) |: |. 8 4 $ >: +: i.32
  2. iP =: +/ (i.64) ([ * =/~) P
  3.  
  4. G =: |."1 }: |: i. 8 8
  5. G =: , (28 {. , G), (24 {. , |. G), (27 19 11 3)
  6.  
  7. KP =: 13 16 10 23 0 4 2 27 14 5 20 9 22 18 11 3 25 7 15 6 26 19 12 1 40 51 30 36 46 54 29 39 50 44 32 47 43 48 38 55 33 52 45 41 49 35 28 31
  8.  
  9. s =: 1, (14 $ 1, 6 $ 2), 1
  10.  
  11. E =: |: i. 8 4
  12. E =: , |: (_1 |. _1 { E) , E , (1 |. 0 { E)
  13.  
  14. P2 =: 15 6 19 20 28 11 27 16 0 14 22 25 4 17 30 9 1 7 23 13 31 26 2 8 18 12 29 5 21 10 3 24
  15.  
  16. S =:    14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7  0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8  4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0  15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
  17. S =: S, 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10  3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5  0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15  13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
  18. S =: S, 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8  13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1  13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7  1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
  19. S =: S, 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15  13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9  10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4  3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
  20. S =: S, 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9  14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6  4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14  11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
  21. S =: S, 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11  10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8  9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6  4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
  22. S =: S, 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1  13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6  1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2  6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
  23. S =: S, 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7  1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2  7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8  2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
  24.  
  25. S =: 8 4 16 $ S
  26.  
  27. f =: dyad : '|. #: S {~ < x, ((5{y)++:0{y), (+/(2^i.4)*}:}.y)' " 0 1
  28. fS =: monad : '}. |."1 (4 $ 1), (i.8) f 8 6 $, y' " 2
  29.  
  30. chr2bin =: monad define
  31. dec =. 0 (3!:4) , y
  32. , |."1 }. (8 $ 1) , |."1 #: ,/ |: |. (2, #dec)$ <. dec (% , |~) 256
  33. )
  34.  
  35. bin2chr =: monad define
  36. dec =. +/ |: (2^i.8) *"1 |."1 (8 ,~ <. 8 %~ # y) $, y
  37. 1 (3!:4) +/"1 (1 256) *"1 (2 ,~ <.(#dec)%2) $ dec
  38. )
  39.  
  40. step =: monad define
  41. K =. > 0 { y
  42. L =. > 1 { y
  43. R =. > 2 { y
  44. (}. K); R ; L ~: P2 { , fS (0 { K) ~: E { R
  45. )
  46.  
  47. encode =: dyad define
  48. key =. x
  49. binkey =. chr2bin key
  50.  
  51. prmkey =. G { binkey
  52. C =. (28 {. prmkey) |.~"1 0 +/\s
  53. D =. (28 }. prmkey) |.~"1 0 +/\s
  54. K =. KP {"1 C ," 1 1 D
  55.  
  56. plain =. y
  57. bin =. chr2bin plain
  58.  
  59. prm =. P { bin
  60. L =. 32 {. prm
  61. R =. 32 }. prm
  62.  
  63. result =. step^:(#K) K; L; R
  64.  
  65. R =. > 1 { result
  66. L =. > 2 { result
  67.  
  68. bin2chr iP { ,L,R
  69. )
  70.  
  71. decode =: dyad define
  72. key =. x
  73. binkey =. chr2bin key
  74.  
  75. prmkey =. G { binkey
  76. C =. (28 {. prmkey) |.~"1 0 +/\s
  77. D =. (28 }. prmkey) |.~"1 0 +/\s
  78. K =. |. KP {"1 C ," 1 1 D
  79.  
  80. plain =. y
  81. bin =. chr2bin plain
  82.  
  83. prm =. P { bin
  84. L =. 32 {. prm
  85. R =. 32 }. prm
  86.  
  87. result =. step^:(#K) K; L; R
  88.  
  89. R =. > 1 { result
  90. L =. > 2 { result
  91.  
  92. bin2chr iP { ,L,R
  93. )
  94.  
  95. plaintext =: 1!:1 < 'in.txt'
  96. plaintext =: (8,~ >. 8 %~ #plaintext) $, ' ',~^:(8 - 8| # plaintext) plaintext
  97. out =: 1!:21 < 'out.txt'
  98. ('habrhabr' encode"1 1 plaintext) 1!:2 out
  99. 1!:22 out
  100.  
  101. cipher =: 1!:1 < 'out.txt'
  102. cipher =: (8,~ >. 8 %~ #cipher) $, cipher
  103. , 'habrhabr' decode"1 1 cipher
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement