Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. public class Rc4
  2. {
  3. private const int N = 256;
  4. private int[] _sbox;
  5. private readonly byte[] _seedKey;
  6. private byte[] _data;
  7. private int _i, _j;
  8. public Rc4(byte[] seedKey, byte[] data)
  9. {
  10. _seedKey = seedKey;
  11. _data = data;
  12. }
  13. public Rc4(byte[] seedKey)
  14. {
  15. _seedKey = seedKey;
  16. }
  17.  
  18. public byte[] Data
  19. {
  20. get
  21. {
  22. return _data;
  23. }
  24. set
  25. {
  26. _data = value;
  27. }
  28. }
  29.  
  30. public byte[] EnDeCrypt()
  31. {
  32. Rc4Initialize();
  33.  
  34. byte[] cipher = new byte[_data.Length];
  35.  
  36. for (int k = 0;k < _data.Length;k++)
  37. {
  38. byte x = GetNextKeyByte();
  39.  
  40. byte cipherBy = (byte)(_data[k] ^ x);
  41.  
  42. cipher[k] = cipherBy;
  43. }
  44.  
  45. return cipher;
  46. }
  47.  
  48. public byte GetNextKeyByte()
  49. {
  50. _i = (_i + 1) % N;
  51. _j = (_j + _sbox[_i]) % N;
  52.  
  53. var tempSwap = _sbox[_i];
  54.  
  55. _sbox[_i] = _sbox[_j];
  56. _sbox[_j] = tempSwap;
  57.  
  58. var k = _sbox[(_sbox[_i] + _sbox[_j]) % N];
  59.  
  60. return (byte)k;
  61. }
  62.  
  63. public void Rc4Initialize()
  64. {
  65. Initialize();
  66. }
  67.  
  68. public void Rc4Initialize(int drop)
  69. {
  70. Initialize();
  71.  
  72. for (var i = 0; i < drop; i++)
  73. {
  74. GetNextKeyByte();
  75. }
  76. }
  77.  
  78. private void Initialize()
  79. {
  80. _i = 0;
  81. _j = 0;
  82.  
  83. _sbox = new int[N];
  84. var key = new int[N];
  85.  
  86. for (var a = 0; a < N; a++)
  87. {
  88. key[a] = _seedKey[a % _seedKey.Length];
  89. _sbox[a] = a;
  90. }
  91.  
  92. var b = 0;
  93. for (var a = 0; a < N; a++)
  94. {
  95. b = (b + _sbox[a] + key[a]) % N;
  96. var tempSwap = _sbox[a];
  97.  
  98. _sbox[a] = _sbox[b];
  99. _sbox[b] = tempSwap;
  100. }
  101. }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement