MCPcopy
hub / github.com/shadowsocks/shadowsocks / EVP_BytesToKey

Function EVP_BytesToKey

shadowsocks/encrypt.py:47–68  ·  view source on GitHub ↗
(password, key_len, iv_len)

Source from the content-addressed store, hash-verified

45
46
47def EVP_BytesToKey(password, key_len, iv_len):
48 # equivalent to OpenSSL's EVP_BytesToKey() with count 1
49 # so that we make the same key and iv as nodejs version
50 cached_key = '%s-%d-%d' % (password, key_len, iv_len)
51 r = cached_keys.get(cached_key, None)
52 if r:
53 return r
54 m = []
55 i = 0
56 while len(b''.join(m)) < (key_len + iv_len):
57 md5 = hashlib.md5()
58 data = password
59 if i > 0:
60 data = m[i - 1] + password
61 md5.update(data)
62 m.append(md5.digest())
63 i += 1
64 ms = b''.join(m)
65 key = ms[:key_len]
66 iv = ms[key_len:key_len + iv_len]
67 cached_keys[cached_key] = (key, iv)
68 return key, iv
69
70
71class Encryptor(object):

Callers 4

get_cipherMethod · 0.85
gen_key_ivFunction · 0.85
dencrypt_allFunction · 0.85
encrypt_allFunction · 0.85

Calls 2

getMethod · 0.80
updateMethod · 0.45

Tested by

no test coverage detected