RC4.ts 894 B

12345678910111213141516171819202122232425262728
  1. export class RC4 {
  2. public static rc4(data: string, key: string) {
  3. var seq: number[] = Array(256); //int
  4. var das = Array(data.length); //code of data
  5. var i = 0;
  6. var j = 0;
  7. for (var i = 0; i < 256; i++) {
  8. seq[i] = i;
  9. j = (j + seq[i] + key.charCodeAt(i % key.length)) % 256;
  10. var temp = seq[i];
  11. seq[i] = seq[j];
  12. seq[j] = temp;
  13. }
  14. for (var i = 0; i < data.length; i++) {
  15. das[i] = data.charCodeAt(i)
  16. }
  17. for (var x = 0; x < das.length; x++) {
  18. i = (i + 1) % 256;
  19. j = (j + seq[i]) % 256;
  20. var temp = seq[i];
  21. seq[i] = seq[j];
  22. seq[j] = temp;
  23. var k = (seq[i] + (seq[j] % 256)) % 256;
  24. das[x] = String.fromCharCode(das[x] ^ seq[k]);
  25. }
  26. return das.join('');
  27. }
  28. }