def sign(self, data):
"""
Sign data (as str) by KID key.
Return signature as str."""
if self.zAES:
data = [ord(x) for x in data]
sLB = len(data) % self.BS
if(sLB > 0 or len(data) == 0):
data += [0x80] + [0]*(self.BS-sLB-1)
xorkey = self.xorKey2
else:
xorkey = self.xorKey1
for i in xrange(self.BS):
data[-self.BS+i] ^= ord(xorkey[i])
cipher = AES.new(self.keyval, AES.MODE_CBC, IV='\0'*16)
data = ''.join([chr(x) for x in data])
sig = cipher.encrypt(data)[-self.BS:]
return sig[:self.TlenB]
else:
padlen = len(data) % self.BS
if padlen > 0:
padlen = self.BS - padlen
sig = self.cipher(data + '\0'*padlen, True)
return sig[-self.BS:]
评论列表
文章目录