吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3631|回复: 3
收起左侧

[Python 转载] python密码学 rc4

[复制链接]
Ksher 发表于 2017-11-30 21:42
python实现rc4对汉字的加密:

[Python] 纯文本查看 复制代码
import numpy
def init(s,key,len):
	i=0
	j=0
	t=[]
	for i in range(256):
		s.append(i)
		t.append(key[i%len])
	i=0
	for i in range(255):
		j=(j+s[i]+t[i])%256
		tmp=s[i]
		s[i]=s[j]
		s[j]=tmp
	return s
def crypt(plaintext,s,len):
	i=0
	j=0
	s1=[]
	s2=[]
	k=1
	for i in range(len*2):
		n=i
		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
		if k%2==0:
			plaintext[int((n-1)/2)]^=m*pow(2,8)+s[t]
			
		else:
			m=s[t]
		k=k+1
	return plaintext
def main():
	key=input('key:')
	plaintext=input('plaintext:')
	ciphertext=[]
	p=[]
	i=j=0
	k=[]
	S=[]
	S1=[]
	s=[]
	c=[]
	for i in range(len(key)):
		k.append(ord(key[i]))
	for j in range(len(plaintext)):
		p.append(ord(plaintext[j]))
	s1=init(S,k,len(key))
	plaint=crypt(p,s1,len(p))
	print('密文:')
	for i in range(len(plaint)):
		ciphertext.append(chr(plaint[i]))
		print(chr(plaint[i]))

	for j in range(len(ciphertext)):
		c.append(ord(ciphertext[j]))
	s2=init(S1,k,len(key))
	test=crypt(c,s2,len(c))
	print('解密:')
	for i in range(len(test)):
		print(chr(test[i]))
if __name__ == '__main__':
	main()


该算法实现了对汉字的加密,而不是单纯的对二进制流的加密

本帖被以下淘专辑推荐:

  • · Aarow|主题: 988, 订阅: 304

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kk1212 发表于 2017-11-30 21:51
感谢分享
ww7245226 发表于 2017-12-1 08:25 来自手机
小黑LLB 发表于 2019-1-31 16:02
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 01:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表