Guest User

Untitled

a guest
Sep 21st, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. #include "arc4.h"
  2.  
  3. void arc4_init(arc4_state *state, const uint8_t *key, size_t keylen) {
  4. for (int_fast16_t i = 0; i < 256; i++) {
  5. state->s[i] = (uint8_t)i;
  6. }
  7. state->x = 0;
  8. state->y = 0;
  9. uint8_t j = 0;
  10. for (int_fast16_t i = 0; i < 256; i++) {
  11. j += state->s[i] + key[i % keylen];
  12. uint8_t k = state->s[i];
  13. state->s[i] = state->s[j];
  14. state->s[j] = k;
  15. }
  16. }
  17.  
  18. void arc4_crypt(arc4_state *state, uint8_t *buf, size_t buflen) {
  19. uint8_t x = state->x;
  20. uint8_t y = state->y;
  21. uint8_t *s = state->s;
  22. for (size_t i = 0; i < buflen; i++) {
  23. x++;
  24. y += s[x];
  25. uint8_t sx = s[x];
  26. uint8_t sy = s[y];
  27. s[x] = sy;
  28. s[y] = sx;
  29. buf[i] ^= s[(sx + sy) & 0xFF];
  30. }
  31. state->x = x;
  32. state->y = y;
  33. }
Add Comment
Please, Sign In to add comment