RC4加密算法实践
来源:互联网 发布:sas软件的数据结构 编辑:程序博客网 时间:2024/06/06 20:17
加密算法简说
加密其实并不是那么神秘,尝试后,加密应用起来也是很简单的,虽然自己一时想不到经典的加密算法出来。
加密算法种类:
- 对称加密:加密解密密钥相同;
- 非对称加密:加密解密使用不同的密钥;
常见加密算法:
- RC4:对称算法、可变长密钥、对大量数据加密、速度快、明文长度不一;
- DEC:对称算法、速度较快、对大量数据加密;
- IDEA:对称算法、128位密钥;
- RSA:非对称算法、公钥+密钥;
RC4加密算法实践
对于RC4加密算法,密钥长度达到128位时,暴力破解基本很难破解了。下面是C++的实现:
encryptdecode.h
#ifndef __ENCRYPTDECODE_H__#define __ENCRYPTDECODE_H__#include<stdio.h>#include<string.h>class EncryptDecode{private: void encrypt_decode_init(unsigned char *s,char *key,unsigned int keyLen); void encrypt_decode(unsigned char *s,unsigned char*Data,unsigned long textLen);};#endif
encryptdecode.cpp
#include "EncryptDecode.h"void EncryptDecode::encrypt_decode_init(unsigned char*s,char*key,unsigned int keyLen){ int i=0,j=0; char k[256]={0}; unsigned char tmp=0; for(i=0;i<256;i++) { s[i]=i; k[i]=key[i%keyLen]; } for(i=0;i<256;i++) { j=(j+s[i]+k[i])%256; tmp=s[i]; s[i]=s[j]; s[j]=tmp; }}void EncryptDecode::encrypt_decode(unsigned char*s,unsigned char*Data,unsigned long textLen){ int i=0,j=0,t=0; unsigned long k=0; unsigned char tmp; for(k=0;k<textLen;k++) { i=(i+1)%256; j=(j+s[i])%256; tmp=s[i]; s[i]=s[j]; s[j]=tmp; t=(s[i]+s[j])%256; Data[k] ^= s[t]; }}
main.cpp
#include "encryptdecode.h"#include <stdio.h>int main(int argc, char *argv[]){ unsigned char s_box[256] = ""; unsigned char buf[512] = "这是一个RC4加密解密算法测试"; char key[256] = ""; int keylen = strlen(key); //加密 encrypt_decode_init(s_box,key,keylen); encrypt_decode(s_box,buf,strlen(buf)); printf("Encrypt:%s\n",buf); //解密(s_box在加密中已更改,需重新获得s_box) encrypt_decode_init(s_box,key,keylen); encrypt_decode(s_box,buf,strlen(buf)); printf("Decode:%s\n",buf); return 0;}
说明
- 对不同长度的明文加密,则对这段明文解密时,需要获取这段明文的长度,否则解密不出来;
- s_box加密后不再是原来的内容了,在加密前可以保存s_box的内容,或者重新初始化一次,解密时才能解密成功;
- 可以知道影响解密成功的因素有明文的长度,比如对一个文件进行加密,将文件分为三段,每段的内容长度不一,则解密时需要依次知道这三段明文的长度;还有就是密钥的长度和内容都会影响解密;
0 0
- RC4加密算法实践
- RC4加密算法
- rc4加密算法
- RC4加密算法
- RC4加密算法
- RC4加密算法
- rc4加密算法
- RC4加密算法
- RC4流加密算法
- RC4加密算法及其实现
- RC4加密算法(记录)
- 加密算法之RC4
- RC4加密算法实现
- VB 6.0中的RC4加密算法
- vb6下的加密算法 RC4
- RC4加密算法 解析及代码
- RC4加密算法及其scala实现
- golang rc4加密算法的使用
- 黑马程序员---OC Category
- 使用JavaMail收发邮件
- SQL注入式攻击
- poj - 2531
- merge sort(归并排序)
- RC4加密算法实践
- 如何关闭窗体、线程、应用程序?
- C++ 下的GDI+绘图初始配置
- [POJ 1980] Unit Fraction Partition Dfs
- scala第78讲:Type与Class实战详解
- UI, 猜数字游戏的实现
- 14. 调整数组顺序使奇数位于偶数前面
- 设置一个简单的安卓启动页面
- 欢迎使用CSDN-markdown编辑器