RC4加密算法

本文介绍了B站UP主关于RC4加密算法的视频内容,详细讲解了流密码中的对称加密过程,包括S表和K表的初始化、密钥使用以及Python代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐一个B站up主的视频,本文章就是根据这个视频来写的

http://【RC4加密算法| 流密码| 对称密码| 密码学 | 信息安全】https://www.bilibili.com/video/BV1G64y1Y7p4?p=2&vd_source=d489eb9dd6c53b7b147915e683943a6d

对称加密算法:

密文+密钥->明文

明文+密钥->密文

流密码算法:一个字节一个字节进行加密

RC4是以一个足够大的表S为基础,对表进行非线性转变,产生密钥流(典型的异或加密)

初始化S表

1. 对S表进行线性填充,一般为256个字节

线性填充就是从0到1挨着挨着来排,比如S[0]=0,S[1]=1;

2.用种子密钥填充另一个256字节的K表

这个种子密钥要一直用,比如是1234,他就123412341.。。。这样一直填充下去直到填满

3.用K表对S表进行初始只换

从S0开始到S255对每个s[i]根据K[i]确定一个方案

将S[i]转换为S中的另一个字节

K这个数组就是储存这个伪随机数的

每一轮的S都不同

代码部分(有大量的255,256,这就是RC4的标志)
from Crypto.Cipher import ARC4  
from Crypto.Util.Padding import pad, unpad  
from Crypto.Random import get_random_bytes  
  
def rc4_encrypt(key, plaintext):  
    cipher = ARC4.new(key)  
    ciphertext = cipher.encrypt(pad(plaintext, ARC4.block_size))  
    return ciphertext  
  
def rc4_decrypt(key, ciphertext):  
    cipher = ARC4.new(key)  
    plaintext = unpad(cipher.decrypt(ciphertext), ARC4.block_size)  
    return plaintext  
  
# 测试代码  
key = get_random_bytes(16)  # 16 bytes key for simplicity, but you can use any length you want.  
plaintext = b"Hello, world!"  
ciphertext = rc4_encrypt(key, plaintext)  
print(ciphertext.hex())  # 输出加密后的密文  
print(rc4_decrypt(key, ciphertext))  # 解密并输出明文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

name_name123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值