From c8d9ca35ffdb735f8fe5a2a7e018fd29e88f215d Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Tue, 2 Jul 2019 17:21:00 +0200 Subject: Réécriture de M_R² en Python MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/add_python/lilliput/multiplications.py | 41 +++++++++++------------------- 1 file changed, 15 insertions(+), 26 deletions(-) (limited to 'src/add_python/lilliput') diff --git a/src/add_python/lilliput/multiplications.py b/src/add_python/lilliput/multiplications.py index 8ca8c7f..edbdaf3 100644 --- a/src/add_python/lilliput/multiplications.py +++ b/src/add_python/lilliput/multiplications.py @@ -41,6 +41,9 @@ def _M1(xi): def _M2(xi): return (xi<<6 ^ (xi&0b11111000) ^ xi>>6) & 0xff +def _M3(xi): + return xi & 0b00011111 + M = ( ( _0, _Id, _0, _0, _0, _0, _0, _0), @@ -91,6 +94,17 @@ MR = ( (_Id, _0, _0, _0, _0, _0, _0, _0), ) +MR2 = ( + ( _0, _0, _Id, _0, _0, _0, _0, _0), + ( _0, _0, _0, _Id, _Sr(3), _0, _0, _0), + ( _0, _0, _0, _0, _Id, _Sr(3), _M3, _0), + ( _0, _0, _0, _0, _0, _Id, _Sl(3), _0), + ( _0, _0, _0, _Sl(2), _0, _0, _Id, _Sl(3)), + ( _0, _0, _0, _0, _Sl(2), _0, _0, _Id), + (_Id, _0, _0, _0, _0, _0, _0, _0), + ( _0, _Id, _0, _0, _0, _0, _0, _0), +) + def _multiplication(m, reverse=True): def ordered(l): @@ -107,31 +121,6 @@ def _multiplication(m, reverse=True): return _multiply -def _multiply_MR2(lane): - multiplied_lane = [lane[(byte+2) % 8] for byte in range(0, 8)] - - multiplied_lane[1] ^= ((lane[4] >> 3) & 0xff) - multiplied_lane[2] ^= ((lane[5] >> 3) & 0xff) - multiplied_lane[3] ^= ((lane[6] << 3) & 0xff) - multiplied_lane[4] ^= ((lane[3] << 2) & 0xff) ^ ((lane[7] << 3) & 0xff) - multiplied_lane[5] ^= ((lane[4] << 2) & 0xff) - - - # binary matrix m3 - multi_mat_l6_m3 = 0 - l6 = lane[6] - multi_mat_l6_m3 ^= (l6 & 0x1) - multi_mat_l6_m3 ^= (l6 & 0x2) - multi_mat_l6_m3 ^= (l6 & 0x4) - multi_mat_l6_m3 ^= (l6 & 0x8) - multi_mat_l6_m3 ^= (l6 & 0x10) - - - multiplied_lane[2] ^= multi_mat_l6_m3 - - return multiplied_lane - - def _multiply_MR3(lane): multiplied_lane = [lane[(byte+3) % 8] for byte in range(0, 8)] @@ -193,6 +182,6 @@ ALPHAS = ( _multiplication(M2), _multiplication(M3), _multiplication(MR, reverse=False), - _multiply_MR2, + _multiplication(MR2, reverse=False), _multiply_MR3 ) -- cgit v1.2.3