⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc4.cpp

📁 一个RC4暴力破解的例子
💻 CPP
字号:
#include "rc4.h"

static void swap_byte(unsigned char *a, unsigned char *b);

void prepare_key(unsigned char *key_data_ptr, int key_data_len,rc4_key *key)
{
  unsigned char index1;
  unsigned char index2;
  unsigned char* state;
  short counter;

  state = &key->state[0];
  for(counter = 0; counter < 256; counter++)
	state[counter] = counter;
  
  key->x = 0;
  key->y = 0;
  index1 = 0;
  index2 = 0;

  for(counter = 0; counter < 256; counter++)
  {
      index2 = (key_data_ptr[index1] + state[counter] + index2) % 256;
      swap_byte(&state[counter], &state[index2]);
      index1 = (index1 + 1) % key_data_len;
  }
}

void rc4(unsigned char *buffer_ptr, int buffer_len, rc4_key *key)
{
  unsigned char x;
  unsigned char y;
  unsigned char* state;
  unsigned char xorIndex;
  short counter;

  x = key->x;
  y = key->y;

  state = &key->state[0];
  for(counter = 0; counter < buffer_len; counter ++)
  {
      x = (x + 1) % 256;
      y = (state[x] + y) % 256;
      swap_byte(&state[x], &state[y]);
      xorIndex = (state[x] + state[y]) % 256;
      buffer_ptr[counter] ^= state[xorIndex];
  }
  key->x = x;
  key->y = y;
}

static void swap_byte(unsigned char *a, unsigned char *b)
{
  unsigned char swapByte;

  swapByte = *a;
  *a = *b;
  *b = swapByte;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -