RC4序列密码

在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。

RC4密码与基于移位寄存器的序列密码不同,它是一种基于非线性数据表变换的序列密码。它以一个足够大的数据表为基础,对表进行非线性变换,产生非线性的密钥序列。非线性变换的依据即输入密钥。

由于RC4密码算法简单,软件实现容易,加密速度块,因此得到了广泛的应用。目前RC4可能是商用领域应用最广的序列密码。

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//s表的长度取256
#define size 256unsigned char sbox[257]={0};//初始化s表
void init_sbox(unsigned char*key){unsigned int i,j,k;int tmp;for(i=0;i<size;i++){sbox[i]=i;}j=k=0;for(i=0;i<size;i++){tmp=sbox[i];j=(j+tmp+key[k])%size;sbox[i]=sbox[j];sbox[j]=tmp;if(++k>=strlen((char*)key))k=0;}
}//加解密函数
void enc_dec(unsigned char*key,unsigned char*data){int i,j,k,R,tmp;init_sbox(key);j=k=0;  for(i=0;i<strlen((char*)data);i++){j=(j+1)%size;k=(k+sbox[j])%size;tmp=sbox[j];sbox[j]=sbox[k];sbox[k]=tmp;R=sbox[(sbox[j]+sbox[k])%size];data[i]^=R;}
}int main(){unsigned char key[100]={0};unsigned char data[100]={0};printf("输入你要加密的字符:");scanf("%100s",data);printf("输入密钥:");scanf("%40s",key);enc_dec(key,data);printf("enc: %s\n",data);enc_dec(key,data);printf("dec: %s\n",data);return 0;
}

代码效果:

C语言实现RC4序列密码相关推荐

  1. C语言实现RC4加解密算法

    C语言实现RC4加解密算法 RC4加解密 RC4加解密 #include<stdio.h>/* RC4初始化函数 */ void rc4_init(unsigned char* s, un ...

  2. rc4加密算法c语言代码,RC4加密算法C语言实现.docx

    页眉 页眉 PAGE PAGE # / 6 RC4 加密算法 C 语言实现 代码文件名 RC4.cpp Encrypt.h (代码详见后文) 备注:将以上两个文件放在相同的路径(建议不要放在中文路径下 ...

  3. 易语言超级算法转php,易语言 PHP RC4算法同步应用源码

    .版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 URL, 文本型 .子程序 __启动窗口_创建完毕 URL = "http://127.0.0.1/rc4/" .子程序  ...

  4. C语言实现RC4加密算法

    加密原理 Rc4加密步骤 1.先初始化状态向量S(256个字节,用来作为密钥流生成的种子1) 按照升序,给每个字节赋值0,1,2,3,4,5,6-,254,255 2.初始密钥(由用户输入),长度任意 ...

  5. a5 1c语言实现,A5算法的C语言实现

    A5算法的C语言,C语言程序,流密码,序列密码 /* * In writing this program, I've had to guess a few pices of information: ...

  6. 加密解密算法之RC4

    参考链接:https://www.biaodianfu.com/rc4.html 前言 感觉RC4算法还是很常见的,特此学习下特征. https://github.com/anthonywei/rc4 ...

  7. RC4算法对文件进行加密解密

    RC4算法对文件进行加密解密 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变.它加解密使用相同的密钥,因此也属于对称加密算法.RC4是有线等效加密(WEP ...

  8. 信息安全要记忆的东西

    一(重点).1.网络信息安全基本属性(基本目标)CIA: 机密性:网络信息数据在传输过程中不允许泄露.被窃取. 完成性:网络信息数据在传输过程中不允许被篡改. 可用性:网络信息数据在授权的条件下,要及 ...

  9. 应用密码学(张仕斌)第五章

    序列密码体制 引言Vernam(弗纳姆)密码技术 1917年美国电话电报公司的GilbertVernam为电报通信设计了一种十分方便的密码技术.后来称之为Vernam密码技术. 它是一种代数密码技术: ...

最新文章

  1. jQuery的触发事件
  2. hadoop3.2.0集群搭建的一些坑!
  3. 『设计模式』设计模式--策略模式
  4. 译文 | 与TensorFlow的第一次接触 第六章:并发
  5. Looking Back 2018
  6. 针式打印机设置连续打印不分页_打印机的应用与耗材介绍
  7. NullableT类型
  8. 滴滴配合警方调证不超 10 分钟;苹果否认恶意芯片报道;贝索斯建火箭中心 | 极客头条...
  9. python预测控制_【模型工具】耦合python和 SWMM的城市排水系统模型预测算法
  10. QQ新版表情序号及对应
  11. 怎么才能够坚持做一件事并且把它做好?
  12. 两个方法做APP界面展示图片
  13. Windows系统怎么查看电脑操作系统位数
  14. 阴阳师夜影诡谈第二天阵容怎么配
  15. 时光流逝我慢慢明白是什么
  16. 关于ROS功能包里package.xml和CMakeList.txt的源码分析
  17. 信号调理方法总结笔记
  18. 【day6】阿里云七天实践训练营之在线编程挑战
  19. Dart —— 函数 函数参数 匿名函数
  20. 忆2011年的秋天:一个人的项目

热门文章

  1. Can't toast on a thread that has not called Looper.prepare()
  2. SAP Cloud for Customer客户主数据的重复检查-Levenshtein算法
  3. angular.isUndefined()
  4. kvm虚拟机vnc配置
  5. Caliburn.Micro 资源随时添加
  6. javascript读取XML文档
  7. Asp.net(C#)给图片加上水印效果(转自园上的Seven Eleven)
  8. java 根据圆心计算圆弧上点的经纬度_冲压件展开计算方法(二),转发给每一位冲压人...
  9. php类退出魔术方法,php类中常用的魔术方法
  10. 同源策略禁止读取位于_用浏览器缓存绕过同源策略(SOP)限制