RC4加密算法实践

加密算法简说

??加密其实并不是那么神秘,尝试后,加密应用起来也是很简单的,虽然自己一时想不到经典的加密算法出来。

??加密算法种类:

  • 对称加密:加密解密密钥相同;
  • 非对称加密:加密解密使用不同的密钥;

??常见加密算法:

  • 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的内容,或者重新初始化一次,解密时才能解密成功;
  • 可以知道影响解密成功的因素有明文的长度,比如对一个文件进行加密,将文件分为三段,每段的内容长度不一,则解密时需要依次知道这三段明文的长度;还有就是密钥的长度和内容都会影响解密;

版权声明:本文为博主[原创]文章,未经博主允许可以转载,注明博客出处:[http://blog.csdn.net/FreeApe]

时间: 2024-07-30 20:30:45

RC4加密算法实践的相关文章

RC4加密算法及其实现

RC4加密算法(http://en.wikipedia.org/wiki/RC4)是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇.之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节.该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性.RC4起初是用于保护商业机密的.但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了.RC4也被叫做ARC4(Alleged RC4——所谓的RC4)

php rc4加密算法实例代码

分享一个php rc4加密算法实例代码,此php加密算法的解密方法是重新加密一次,便可还. /* * rc4加密算法 * $pwd 密钥 * $data 要加密的数据 */ function rc4 ($pwd, $data)//$pwd密钥 $data需加密字符串 { $key[] =""; $box[] =""; $pwd_length = strlen($pwd); $data_length = strlen($data); for ($i = 0; $i &

RC4加密算法的原理及实现

RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥).但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密. RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见RC4的密钥范围任然可以在今后相当长的时间里抵御暴力搜

RC4加密算法

RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥).但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密. RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见RC4的密钥范围任然可以在今后相当长的时间里抵御暴力搜

对称加密算法之RC4介绍及OpenSSL中RC4常用函数使用举例

RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码. RC4是流密码streamcipher中的一种,为序列密码.RC4加密算法是Ron Rivest在1987年设计出的密钥长度可变的加密算法簇.起初该算法是商业机密,直到1994年,它才公诸于众.由于RC4具有算法简单,运算速度快,软硬件实现都十分容易等优点,使其在一些协议和标准里得到了广泛应用. 流密码也属于对称密码,但与分组加密算法不同的是,流密码不对明

java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4

概述 信息安全基本概念: DES(Data Encryption Standard,数据加密标准) 3DES(Triple DES,三重数据加密算法(TDEA,Triple Data Encryption Algorithm)) AES(Advanced Encryption Standard,高级加密标准) Blowfish RC2 RC4 DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定

C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应位其中一个为1另一个为0,则返回1. //对数字加密 int P_int_Num, P_int_Key;//定义两个值类型变量 string Encryptstr = (P_int_Num ^ P_int_Key).ToString();//加密数值 //对数字解密 int P_int_Key, P_int_

RC4加密解密算法原理与完整源代码实例演示

RC4加密算法 RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇.之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节.该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性.RC4起初是用于保护商业机密的.但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了.RC4也被叫做ARC4(Alleged RC4——所谓的RC4),因为RSA从来就没有正式发布过这个算法. 原理 R

常见加密算法概述

1.1 对称加密对称加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”.这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的“Session Key”长度为56 Bits.对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性.假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用.如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦.对称加密算法