RC4(Rivest Cipher 4)是一种流加密算法,密钥长度可变。并且因为加解密时使用的密钥相同,所以也为对称加密。加密过程和解密过程仅明密文的区别。

  主要分为初始化 s 盒和伪随机密码生成组成:

 #  RC4 —— Rivest Cipher 4 —— Ronald Rivest 设计    #############
# 流密码,同时也是对称加密算法 #############
# 原理:初始化和伪随机子密码生成器 #############
# 漏洞:密钥序列出现重复密文可能被破解 #############
# # 初始化函数
# 将 S 盒搅乱,以便之后伪随机子密码生成
def rc4_init(key):
i, j, L = 0, 0, len(key)
k = [0]*256
s = [0]*256
for i in range(256):
s[i] = i
k[i] = key[i % L]
for i in range(256): # 打乱 S 盒
j = (j + s[i] + k[i]) % 256
s[i], s[j] = s[j], s[i]
return s def rc4_crypt(sbox, plain):
i, j = 0, 0
for k in range(len(plain)):
i = (i + 1) % 256
j = (j + sbox[i]) % 256
sbox[i], sbox[j] = sbox[j], sbox[i]
plain[k] ^= sbox[(sbox[i] + sbox[j])%256] #每加密一个密文 S 盒都会变化一次
print(bytes(plain)) def RC4():
key = input("密钥输入:")
plain = input("明文输入:")
rc4_crypt(rc4_init(str.encode(key)), [x for x in str.encode(plain)]) if __name__ == '__main__':
RC4()

  因为加密只与密钥有关,而加密主要是靠 S 中的异或运算,因此解密与加密一致。

  破解方式也主要是以限定范围的暴力破解。

RC4的更多相关文章

  1. ubuntu15.10下编译安装wine1.8 rc4

    ubuntu15.10下编译安装wine1.8rc4 Wine (“Wine Is Not an Emulator” 的递归缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Li ...

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

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  3. RAS RC4 AES 加密 MD5

    这两者唯一的相同点是设计者中都包含了MIT的Ron Revist教授.RSA是公钥密码算法,优点:不用事先通过秘密信道传递密钥,可以用于数字签名.缺点:速度慢RC4是序列密码算法,优点:速度快,缺点: ...

  4. RC4加密解密算法

    RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数 ...

  5. RC4加密算法

    RC4是Ron Rivest在1987年设计的密钥长度可变的流加密算法.它加解密使用相同的密钥,因此也属于对称加密算法.RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一. ...

  6. RC4 加密算法asp版

    Function RC4(data, Key) ), k(), outstr, Acii, j, tst, xre1, xre2, temp, x, t, y, qwe, zxc s(i) = i - ...

  7. rc4加密

    function RC4(Expression, Password: string): string; var RB : array[0..255] of Integer; X, Y, Z: long ...

  8. java RC4加密和解码

    package com.*; public class RC4 { public static String decry_RC4(byte[] data, String key) { if (data ...

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

    概述 信息安全基本概念: DES(Data Encryption Standard,数据加密标准) 3DES(Triple DES,三重数据加密算法(TDEA,Triple Data Encrypti ...

  10. php使用rc4加密算法

    /** * rc4加密算法,解密方法直接再一次加密就是解密 * @param  [type] $data 要加密的数据 * @param  [type] $pwd  加密使用的key * @retur ...

随机推荐

  1. SpaceSyntax【空间句法】之DepthMapX学习:第一篇 数据的输入 与 能做哪些分析

    两部分,1需要喂什么东西给软件,2它能干什么(输出什么东西在下一篇讲) 博客园/B站/知乎/CSDN @秋意正寒 转载请在头部附上源地址 目录:https://www.cnblogs.com/onsu ...

  2. 驰骋工作流引擎-流程数据md5加密

    关键字:工作流程数据加密  md5  数据保密流程数据防篡改软加密设置方式: 对工作流引擎的数据加密研究, 流程数据的加密方案与实现过程.输入图片说明需求背景1, 流程数据加密是为了防止流程数据被篡改 ...

  3. Android 上传图片到服务器 okhttp一

    [目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...

  4. Git使用详细教程(9):git log

    目录 格式化 检索 显示最近提交 Git中使用git log查看提交日志 如果日志很多的话,默认会以分页方式展示 空格可以翻下一页,ctrl+b翻上一页,q退出 格式化 如果想获取每条日志的简要信息, ...

  5. 2018-01-12 Antlr4添加中文变量赋求值,括号,各种问题

    中文编程知乎专栏原文地址 例程(更多测试用例在此): 基数=100 基数×(基数+1)÷2 => 求值为5050 续上文Antlr4实现数学四则运算, 修改的语法规则部分: 程序: 声明+; 声 ...

  6. SQL Server使用sp_rename重命名约束注意事项

    在SQL Server中,我们可以使用sp_name这个系统存储过程重命名数据库中对象的名称. 此对象可以是表. 索引. 列. 别名,约束等数据类型(具体可以参考官方文档).上周在使用这个函数重构数据 ...

  7. linux 进程概念

    1,pcb:进程控制块结构体:/usr/src/linux-headers-4.15.0-29/include/linux/sched.h 进程id:系统中每个进程有唯一的id,在c语言中用pid_t ...

  8. aspnetcore.webapi实战k8s健康探测机制 - kubernetes

    1.浅析k8s两种健康检查机制 Liveness k8s通过liveness来探测微服务的存活性,判断什么时候该重启容器实现自愈.比如访问 Web 服务器时显示 500 内部错误,可能是系统超载,也可 ...

  9. 快速构建SPA框架SalutJS--项目工程目录 一

    起因 刚进公司那会儿,接的是一个微信APP应用,SPA是前人搭起来的,用到的技术主要是backbone和zepto.后来那人走了,就卤煮一个人把项目接了下来.项目越是到后面,越发觉了诸多弊端,不停的增 ...

  10. ASP.NET Core Web API 集成测试中使用 Bearer Token

    在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, ...