X-Git-Url: http://www.git.cypherpunks.ru/?p=pygost.git;a=blobdiff_plain;f=pygost%2Fgost34112012.py;h=ae7627bf23703cb4b8903385b32abb61d521bb67;hp=2e43fe1cb6c04e3c2d80189948b55aea400b67f9;hb=45e6d22a3b1aae4c7edafe129a23d4ae851db733;hpb=c040e481f97cb43465a8df481d63bdd3367c0f8d diff --git a/pygost/gost34112012.py b/pygost/gost34112012.py index 2e43fe1..ae7627b 100644 --- a/pygost/gost34112012.py +++ b/pygost/gost34112012.py @@ -162,14 +162,8 @@ C = [hexdec("".join(s))[::-1] for s in ( ), )] -# Trade memory for CPU for part of L() calculations -_Cache = None - -def _cache_ensure(): - global _Cache - if _Cache is not None: - return +def _lcache(): cache = [] for byteN in xrange(8): cache.append([0 for _ in xrange(256)]) @@ -182,7 +176,11 @@ def _cache_ensure(): res64 ^= A[(7 - byteN) * 8 + bitN] val <<= 1 cache[byteN][byteVal] = res64 - _Cache = cache + return cache + + +# Trade memory for CPU for part of L() calculations +LCache = _lcache() def add512bit(a, b): @@ -222,12 +220,11 @@ def PS(data): def L(data): - _cache_ensure() res = [] for i in range(8): res64 = 0 for j in range(8): - res64 ^= _Cache[j][data[8 * i + j]] + res64 ^= LCache[j][data[8 * i + j]] res.append(pack("