MCPcopy Index your code
hub / github.com/clips/pattern / Arcfour

Class Arcfour

pattern/web/pdf/arcfour.py:11–44  ·  view source on GitHub ↗

>>> Arcfour('Key').process('Plaintext').encode('hex') 'bbf316e8d940af0ad3' >>> Arcfour('Wiki').process('pedia').encode('hex') '1021bf0420' >>> Arcfour('Secret').process('Attack at dawn').encode('hex') '45a01f645fc35b383552544b9bf5'

Source from the content-addressed store, hash-verified

9## Arcfour
10##
11class Arcfour(object):
12
13 """
14 >>> Arcfour('Key').process('Plaintext').encode('hex')
15 'bbf316e8d940af0ad3'
16 >>> Arcfour('Wiki').process('pedia').encode('hex')
17 '1021bf0420'
18 >>> Arcfour('Secret').process('Attack at dawn').encode('hex')
19 '45a01f645fc35b383552544b9bf5'
20 """
21
22 def __init__(self, key):
23 s = range(256)
24 j = 0
25 klen = len(key)
26 for i in xrange(256):
27 j = (j + s[i] + ord(key[i % klen])) % 256
28 (s[i], s[j]) = (s[j], s[i])
29 self.s = s
30 (self.i, self.j) = (0, 0)
31 return
32
33 def process(self, data):
34 (i, j) = (self.i, self.j)
35 s = self.s
36 r = ''
37 for c in data:
38 i = (i+1) % 256
39 j = (j+s[i]) % 256
40 (s[i], s[j]) = (s[j], s[i])
41 k = s[(s[i]+s[j]) % 256]
42 r += chr(ord(c) ^ k)
43 (self.i, self.j) = (i, j)
44 return r
45
46# test
47if __name__ == '__main__':

Callers 2

initializeMethod · 0.90
decrypt_rc4Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…