一.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. 集成学习(Ensemble Learning)
  2. 使用vb获取网页源文件并保存的简单代码
  3. 查看一个索mysql_如何查看MySQL索引
  4. CentOS 7最小安装之后应该尽快做好的几件事情
  5. 微软图表控件MsChart使用说明[转]
  6. Mysql数据目录初识
  7. python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合
  8. Angular HttpClient.get的实现单步调试
  9. CVE-2013-4547 文件名逻辑漏洞
  10. httpserver
  11. 什么是mysql的索引_什么是MySQL索引?【详解】
  12. MYSQL 编码设置
  13. 房子值500万租金仅3500元,卖房拿利息和出租哪个合算?
  14. HDU3571 N-dimensional Sphere(高斯消元 同模方程)
  15. HashMap底层实现(源码分析)
  16. mysql主从复制及读写分离
  17. “贵州与您相约”英文网站8月18日正式上线;大华股份助力长兴打造景区数字化管理样板 | 全球旅报...
  18. 系统和环境(建模与仿真)
  19. sap 新增科目表_SAP系统中四大科目表的总结
  20. word合并邮件无法发送html,Word邮件合并批量发送带附件的邮件

热门文章

  1. Balun变换器基础知识
  2. i510600k参数 i510600k怎么样
  3. python列表02
  4. 创基Type-C拓展坞兼容Type-C多种品牌笔记本
  5. 专业论文翻译/全文翻译
  6. 大家来找茬图片比较脚本
  7. Hacker Net
  8. html5禁止手机横竖屏,【Web前端问题】js 能禁止手机横竖屏切换吗
  9. MS7210,数字RGB转HDMI,P=P替代IT66121FN,HDMI_Tx
  10. 学神争霸!2019清华本科生特奖答辩入围名单公布