Skip to content

Instantly share code, notes, and snippets.

Created January 19, 2013 20:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/4574783 to your computer and use it in GitHub Desktop.
Save anonymous/4574783 to your computer and use it in GitHub Desktop.
import sys
#KSA - Key-Scheduling Algorithm (wiki)
def KSA(kljuc):
duljina_kljuca = len(kljuc) #predstavlja broj bajtova u kljucu
S = range(256) #postavljanje permutacija identiteta
j = 0
for i in range (256):
j = (j + S[i] + kljuc[i % duljina_kljuca]) % 256
S[i], S[j] = S[j], S[i] #zamjena vrijednosti
return S
#PRGA - Pseudo-Random Generation Algorithm (wiki)
def PRGA(S):
i = 0
j = 0
while True:
i = (i + 1) % 256
j = (j + S[i]) % 256
S[i], S[j] = S[j], S[i] #zamjena vrijednosti
K = S[(S[i] + S[j]) %256] #bajt toka kljuceva
yield K #yield se ovdje koristi jer je pogodniji za generatore
def RC4(kljuc):
S = KSA(kljuc)
return PRGA(S)
def konverzija_kljuca(v_k):
return [ord(c) for c in v_k]
def kriptiraj(text, k):
kljuc = konverzija_kljuca(k)
tok_kljuceva = RC4(kljuc)
for c in text:
sys.stdout.write("%02X" % (ord(c) ^ tok_kljuceva.next()))
print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment