RC4加解密
来源:互联网 发布:网络喷子被人肉 编辑:程序博客网 时间:2024/04/28 08:54
1)利用C\C++语言实现RC4算法(n=3),利用生成的密钥对“this is a test”进行加/解密(按对应位作模2加运算)。
# include <iostream># include<string.h># include<stdlib.h># include<math.h># include<algorithm># include<stdio.h>using namespace std;int s[256], k[256];void initsk(int n, string str) //s表初始化,k表赋值{ for(int i = 0; i < n; i ++) s[i] = i; for(int i, j = 0; i < n; i ++) { k[i] = (str[j] - '0') % n; j ++; if(j == str.length()) { j = 0; } } for(int i = 0, j = 0; i < n; i ++) { j = ( j + s[i] + k[i]) % n; swap(s[i], s[j]); }}string RC4(int n) //密钥流的产生{ string str = ""; for(int i = 0, j = 0; i < n; ) { i ++; j = (j + s[i]) % n; swap(s[i], s[j]); int t = ( s[i] + s[j] ) % n; str += s[t] + '0'; } return str;}string jiajiemi(string wen, string miyaoliu) //加解密过程{ int len = wen.length(); int len1 = miyaoliu.length(); string ans = ""; for(int i = 0, j = 0; i < len; i ++) { if(wen[i] == ' ') { ans += ' '; continue; } int a = wen[i] ; int b = miyaoliu[j] - '0'; int k =a ^ b; ans += char(k) ; j++; if(j == len1) { j = 0; } } return ans;}int main(){ while(1) { string st; int n; printf("请输入n: "); scanf("%d", &n); n = pow(2, n); printf("请输入密钥:\n"); cin>>st; getchar(); initsk(n, st); //s表初始化,k表赋值 string str = RC4(n); //密钥流的产生 printf("请输入要加密的字符串:"); string mingwen; getline(cin, mingwen); string miwen = jiajiemi(mingwen, str); //加密 printf("加密后的密文为:\n"); cout<<miwen<<endl; mingwen = jiajiemi(miwen, str); //解密 printf("解密后明文为:\n"); cout<<mingwen<<endl; } return 0;}
0 0
- RC4加解密算法
- RC4加解密算法
- RC4加解密
- java RC4加解密
- RC4 加解密
- LoadRunner RC4加解密
- cocos rc4加解密
- OpenSSL之RC4加解密
- RC4的加解密原理
- iOS RC4加解密算法
- python版本rc4加解密
- PHP RC4 加解密类
- OpenSSL中RC4加解密过程调研
- python 类版本rc4加解密
- Linux下RC4算法的多线程加解密
- RC4加密解密
- php--rc4加密解密
- java RC4加密解密
- 《黑马程序员》 怎么使用java中的枚举方法
- oracle之归档
- 九度oj 题目1002:Grading 【ZJU2011考研机试题2】
- 安全禁用Mac OS的开机音效(“咣”的声音) by 兔子@cppblog
- linux 服务器常用操作
- RC4加解密
- 抱明月而长终;知不可乎骤得
- sql(1)
- 解决一个吐血问题,在winform编程中修改控件的X,Y坐标值,并不能修改控件的位置
- 注解 小例子
- linux mysql 操作命令
- 基本数据类型
- IOS系列——导航条的多种操作
- C++中public,protected,private