一.RC4算法

参考RC4加密算法的过程 代入例子计算

二.c语言实现

#include <stdio.h>
#include <string.h>
unsigned char sbox[256] = { 0 };
void swap(unsigned char* a, unsigned char* b)
{unsigned char tmp = *a;*a = *b;*b = tmp;
}
void init_sbox( unsigned char key[]) {for (unsigned int i = 0; i < 256; i++)//赋值sbox[i] = i;unsigned int keyLen = strlen((char*)key);unsigned char Ttable[256] = { 0 };for (int i = 0; i < 256; i++)Ttable[i] = key[i % keyLen];//根据初始化t表for (int j = 0, i = 0; i < 256; i++){j = (j + sbox[i] + Ttable[i]) % 256;    //打乱s盒swap(sbox[i], sbox[j]);}
}
void RC4_enc_dec(unsigned char data[],unsigned char key[]){unsigned char k, i = 0, j = 0, t;init_sbox(key);unsigned int dataLen = strlen((char*)data);for (unsigned h = 0; h < dataLen; h++){i = (i + 1) % 256;j = (j + sbox[i]) % 256;swap(sbox[i], sbox[j]);t = (sbox[i] + sbox[j]) % 256;k = sbox[t];    //求密钥流,并对明文加密data[h] ^= k; }
}int main()
{unsigned char data[1000] = { 0 };unsigned char key[100] = { 0 };printf("请输入需要加密的明文:\n");scanf("%s", data);printf("请输入密钥key:\n");scanf("%s", key);RC4_enc_dec(data, key);printf("加密后的密文是:\n,%s",data);RC4_enc_dec(data, key);printf("解密后的明文是:\n%s", data);return 0;
}

运行效果:

三.c++实现

#include <iostream>
#include <string>
using namespace std;
class RC4 {
private:unsigned char s[256];void swap(unsigned char& a, unsigned char& b){unsigned char tmp = a;a = b;b = tmp;}void init_sbox(string key){for (unsigned int i = 0; i < 256; i++)  //初始化s盒s[i] = i;unsigned char T[256] = { 0 };unsigned keylen = key.length();for (int i = 0; i < 256; i++)T[i] = key[i % keylen];              //根据密钥初始化t表for (int j = 0, i = 0; i < 256; i++){j = (j + s[i] + T[i]) % 256;      //打乱s盒swap(s[i], s[j]);}}
public :void enc_dec(string& data,string key) {init_sbox(key);unsigned int datalen = data.length();unsigned char k, i = 0, j = 0, t;for (unsigned int h = 0; h < datalen; h++){i = (i + 1) % 256;j = (j + s[i]) % 256;swap(s[i], s[j]);t = (s[i] + s[j]) % 256;k = s[t];data[h] ^= k;}}
};int main()
{RC4 rc4 ;string data, key;cout << "请输入需要加密的明文:" << endl;cin >> data;cout << "请输入密钥key:" << endl;cin >> key;rc4.enc_dec(data, key);cout << "加密后的内容是:\n" << data << endl;rc4.enc_dec(data, key);cout << "解密后的内容是:\n" << data << endl;return 0;
}

运行效果:

RC4算法c/c++语言实现相关推荐

  1. 十种经典排序算法精粹(c语言版本)

    下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...

  2. 迪杰斯特拉算法(C语言实现)

    迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...

  3. 【每日算法】C语言8大经典排序算法(2)

    接上文--->[每日算法]C语言8大经典排序算法(1) 二.插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中 ...

  4. python中栈的描述是_数据结构与算法:Python语言描述 栈和队列.ppt

    数据结构与算法:Python语言描述 栈和队列 迷宫问题 迷宫问题的特点: 存在一集可能位置,一些位置相互连通,一步可达 一个位置可能连通若干位置,出现向前探查的多种可能(有分支) 目标是找到一条路径 ...

  5. c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言

    FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...

  6. 用c语言实现蚂蚁算法,rsa算法的c语言实现

    rsa算法的c语言实现 RSA 算法的 C 语言实现一.RSA 算法的描述 1.选取长度相等的两个大素数 p 和 q,计算其乘积: n=pq 然后随机选取加密密钥 e,使 e 和 (p–1)(q–1) ...

  7. 四阶龙格库塔c语言,四阶龙格库塔算法的C语言实现

    解微分方程 2001年3月焦作大学学报 JOURNALOFJIAOZUOUNIVERSITY№ 1Mar.2001第1期 四阶龙格一库塔算法的C语言实现 毋玉芝 (焦作财会学校) 摘要本文叙述了四阶龙 ...

  8. RC4算法及其实践(Hello Password)

    Hello Password 一个简单的安全密码管理工具. Why? 因为我无法信任网上的密码管理软件.另外,加密数据离开对应的密码管理软件无法解析,这个问题困扰着我. 所以,不如自己写一个简简单单的 ...

  9. c语言程序位置式pid算法,位置式PID算法的C语言代码

    描述 位置式PID的C语言写法详解 PID调节口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积 ...

最新文章

  1. C#获取当前进程、项目路径的方法
  2. python学习笔记一
  3. AUTOSAR从入门到精通100讲(四十四)-AUTOSAR 通信服务-PDU Router
  4. Liferay被SourceForge评为7月最佳开源项目
  5. C# 子类实例化基类 基类使用不了子类的方法_C#委托事件机制:事件的完整声明,触发和事件的本质(6)...
  6. php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端
  7. 分布式事务解决方案之可靠消息最终一致性
  8. WPF 引用 ttf文件
  9. freeswitch安装1.6
  10. 2招PDF去密码,秒学秒懂秒用上!
  11. 而立之年——三线城市程序员的年终告白
  12. 数据挖掘算法和实践(二十一):kaggle经典-职场离职率分析案例解读
  13. acedGrRead用法
  14. python量化选股策略 源码_【一点资讯】Python实现行业轮动量化选股【附完整源码】...
  15. 新松机器人:【示教编程】+【PC离线编程】+【PLC远程IO】相结合
  16. Laya Stage
  17. Java实现 蓝桥杯 算法提高 Monday-Saturday质因子
  18. 2019年自考计算机应用基础(实践),2019年自考计算机应用基础试题练习(九)
  19. 了解一下ISO 8601是什么
  20. UtraISO刻录DVD申请区域不成功 POWER CALIBRATION AREA ERROR

热门文章

  1. 江宁区办理居住证的细节
  2. 初中-大一学习生涯回忆录
  3. Django路由(urls.py)
  4. 【目标检测】SPP-Net中候选区域在原图和feature map之间的映射关系
  5. python输入两个数字的成语_请用 Python 语言编写一个简易的猜数字游戏程序。
  6. 响应式图片的实现(含picture标签、srcset属性、sizes属性的使用方法,设备像素比详解)
  7. linux查看zookeeper版本
  8. 关于Div的宽度与高度的100%设定
  9. python画k线图_请问Python有什么工具可以绘制K线图
  10. 十三四岁的学生不想上学怎么办