예제 #1
0
파일: md.py 프로젝트: Tubbz-alt/crysp-1
 def SEQ(self, M, bitlen=None):
     pad = Nullpadding(3072)
     B = [
         struct.unpack('>48Q', X) for X in pad.iterblocks(M, bitlen=bitlen)
     ]
     j = len(B)
     z = 0
     d, keylen, L, r = self.size, self.keylen, self.L, self.rounds
     V = Bits(d, 12) // Bits(keylen, 8) // Bits(0, 16) // Bits(
         z, 4) // Bits(L, 8) // Bits(r, 12) // Bits(0, 4)
     C = Poly(0, 64, dim=16)
     W = Poly(Q, 64, dim=89) // Poly(self.K, 64)
     W.dim = 89
     W[24] = V
     U = (self.L + 1) << 56
     for i in range(j):
         if i == (j - 1):
             V[20:36] = pad.padcnt
             V[36:40] = Bits(1, 4)
             W[24] = V
         W[23] = U + i
         W[25:41] = C
         W[41:89] = B[i]
         C = self.f(W)
     h = concat(list(C)[::-1])
     h.size = self.size
     return pack(h, '>L')
예제 #2
0
파일: md.py 프로젝트: bdcht/crysp
 def PAR(self,l,M,bitlen=None):
     pad = Nullpadding(4096)
     B = [struct.unpack('>64Q',X) for X in pad.iterblocks(M,bitlen=bitlen)]
     j = len(B)
     z = 1 if j==1 else 0
     d,keylen,L,r = self.size,self.keylen,self.L,self.rounds
     V = Bits(d,12)//Bits(keylen,8)//Bits(0,16)//Bits(z,4)//Bits(L,8)//Bits(r,12)//Bits(0,4)
     C = []
     W = Poly(Q,64)//Poly(self.K,64)
     W.dim = 89
     W[24]  = V
     for i in range(j):
         if i==(j-1):
             V[20:36]=pad.padcnt
             W[24]  = V
         U = (l<<56)+i
         W[23]  = U
         W[25:89] = B[i]
         C.append(self.f(W))
     Ml = concat(C)
     return b''.join((pack(c,'>L') for c in Ml))
예제 #3
0
파일: md.py 프로젝트: bdcht/crysp
 def SEQ(self,M,bitlen=None):
     pad = Nullpadding(3072)
     B = [struct.unpack('>48Q',X) for X in pad.iterblocks(M,bitlen=bitlen)]
     j = len(B)
     z = 0
     d,keylen,L,r = self.size,self.keylen,self.L,self.rounds
     V = Bits(d,12)//Bits(keylen,8)//Bits(0,16)//Bits(z,4)//Bits(L,8)//Bits(r,12)//Bits(0,4)
     C = Poly(0,64,dim=16)
     W = Poly(Q,64,dim=89)//Poly(self.K,64)
     W.dim = 89
     W[24]  = V
     U = (self.L+1)<<56
     for i in range(j):
         if i==(j-1):
             V[20:36]=pad.padcnt
             V[36:40]=Bits(1,4)
             W[24]  = V
         W[23] = U+i
         W[25:41] = C
         W[41:89] = B[i]
         C = self.f(W)
     h = concat(list(C)[::-1])
     h.size = self.size
     return pack(h,'>L')
예제 #4
0
파일: md.py 프로젝트: Tubbz-alt/crysp-1
 def PAR(self, l, M, bitlen=None):
     pad = Nullpadding(4096)
     B = [
         struct.unpack('>64Q', X) for X in pad.iterblocks(M, bitlen=bitlen)
     ]
     j = len(B)
     z = 1 if j == 1 else 0
     d, keylen, L, r = self.size, self.keylen, self.L, self.rounds
     V = Bits(d, 12) // Bits(keylen, 8) // Bits(0, 16) // Bits(
         z, 4) // Bits(L, 8) // Bits(r, 12) // Bits(0, 4)
     C = []
     W = Poly(Q, 64) // Poly(self.K, 64)
     W.dim = 89
     W[24] = V
     for i in range(j):
         if i == (j - 1):
             V[20:36] = pad.padcnt
             W[24] = V
         U = (l << 56) + i
         W[23] = U
         W[25:89] = B[i]
         C.append(self.f(W))
     Ml = concat(C)
     return b''.join((pack(c, '>L') for c in Ml))