RE_RC4加密

2024-06-06 18:12
文章标签 加密 re rc4

本文主要是介绍RE_RC4加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前做的几道题目,rc4也是经常遇到,今来系统学学,记录一下

对称加密,即加密和解密的密钥可以相互推导,也有的是相同的。

RC4 是以字节流处理每一个字节,而不是 DES 的分组操作。

包含三个参数:key  ,enc  , len(enc)

首先就是 S 盒的生成,256个字节,先是0-256填充,然后又用 key,len(key) 去替换 S 盒的部分,形成一个伪随机的 S 盒。

然后就是 S 盒和密文逐个字节异或,得到密文。解密再异或回去就可以了。

def S_init(key, key_len):S = list(range(256))K = [key[i % key_len] for i in range(256)]j = 0for i in range(256):j = (j + S[i] + K[i]) % 256S[i], S[j] = S[j], S[i]return Sdef encrypt(data, key):key_len = len(key)data_len = len(data)S = S_init(key, key_len)i = 0j = 0enc = bytearray()for byte in data:i = (i + 1) % 256j = (j + S[i]) % 256S[i], S[j] = S[j], S[i]tmp = (S[i] + S[j]) % 256k = S[tmp]enc.append(byte ^ k)return bytes(enc)def decrypt(ciphertext, key):# RC4 decryption is the same as encryptionreturn encrypt(ciphertext, key)if __name__ == "__main__":data=[0xD5, 0xB2, 0x7C, 0xDC, 0x90, 0xA2, 0x6E, 0x60,0x06, 0x13, 0xE4, 0x71, 0x59, 0xB0, 0x90, 0x31,0xB2, 0xC7, 0x1D, 0xD7,0x7f]str='litctf!'key=list(map(ord,str))res=encrypt(data,key)print(res)

[LitCTF 2024]ezrc4

就是一个简单的 RC4,密文就在开头,key 最外面是错的,交叉引用,去得到真 key

enc: 0xD5, 0xB2, 0x7C, 0xDC, 0x90, 0xA2, 0x6E, 0x60,0x06, 0x13, 0xE4, 0x71, 0x59, 0xB0, 0x90, 0x31,0xB2, 0xC7, 0x1D, 0xD7,0x7f

可以直接写脚本,也可以去动调

main函数之前应该还有反调试,但没找到,啧。

这会也没遇到专门的RC4的了,之后遇到再写上。

这篇关于RE_RC4加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036853

相关文章

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用