RC4對稱流加密演算法 python實現

2021-09-29 06:47:48 字數 2087 閱讀 4712

rc4演算法的詳細說明在這裡!

在上機實驗知道要求實現rc4演算法的時候,就看了一下老師發的rc4相關資料,然後整個人都是懵的……隨後找到了大佬的部落格跟老師的指導資料共同作為參考寫出了簡易的python實現**。

廢話不多說,直接上**

說明參考,可以借鑑大佬的部落格

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# description: rc4對稱加密、解密

# author: afeng

# date: 2019/11/2

# reference:

""" rc4加密、解密演算法

# 說明:

* 依照如上鏈結思想實現對明文進行rc4加密、解密操作

# 實現說明:

* 在本**中,通過ord()將使用者的輸入轉化為ascii碼值,而後由該碼值進行rc4加解密操作

"""# rc4加密(與使用者輸入進行互動)

defencrypt

(tmp, message)

: tmp =

list

(map

(lambda x:

ord(x)

, tmp)

) message =

list

(map

(lambda x:

ord(x)

, message)

)# ###初始狀態向量s(256位元組)### #

s =list

(range(0

,256))

key =

# 儲存秘鑰流

t =# 臨時向量t

# ###按照使用者資料填充t### #

while

len(t)

<

256:

t.extend(tmp)

while

len(t)

!=256

: t.pop(

)# ###對狀態向量s進行置換操作### #

j =0for i in

range(0

,256):

j =(j + s[i]

+ t[i])%

256 s[i]

, s[j]

= s[j]

, s[i]

# ###秘鑰流的生成### #

i, j =0,

0for i in

range

(len

(message)):

i =(i +1)

%256

j =(j + s[i])%

256 s[i]

, s[j]

= s[j]

, s[i]

t =(s[i]

+ s[j])%

256)

# ###對明文加密(異或運算)### #

secretary =

list

(map

(lambda x, y: x ^ y, message, key)

)return secretary, key

# rc4解密(使用key與密文進行異或解密)

defdecrypt

(secretary, key)

: message =

list

(map

(lambda x, y:

chr(x ^ y)

, secretary, key)

)return

''.join(message)

if __name__ ==

'__main__'

: t =

list

(input

("請輸入初始秘鑰:"))

m =list

(input

("請輸入需要加密的明文:"))

s, k = encrypt(t, m)

print

('經過加密解密後得到的明文:'

, decrypt(s, k)

)

對稱加密演算法 RC4

1 演算法原理 1 rc4首先使用的是密碼排程演算法,所謂的密碼排程演算法,是為了得到金鑰流而設計的,如下,經過密碼排程演算法之後,可以得到乙個256位的金鑰流。def initialize s k s range 256 j 0 for i in range 256 j j s i k i 256...

RC4加密演算法

rc4於1987年提出,和des演算法一樣,是一種對稱加密演算法,也就是說使用的金鑰為單鑰 或稱為私鑰 但不同於des的是,rc4不是對明文進行分組處理,而是位元組流的方式依次加密明文中的每乙個位元組,解密的時候也是依次對密文中的每乙個位元組進行解密。rc4演算法的特點是演算法簡單,執行速度快,而且...

RC4加密演算法

簡介 包括初始化演算法 ksa 和加密演算法兩大部分 主要 初始化部分 這個基本上是固定的 void rc4 init unsigned char s,unsigned char key,unsigned long len s最開始是傳入的長度為256的char型空陣列,用來存放初始化後的s key...