示例#1
0
 def encrypt(cls, key, keyusage, plaintext, confounder):
     ki = cls.derive(key, pack('>iB', keyusage, 0x55))
     ke = cls.derive(key, pack('>iB', keyusage, 0xAA))
     if confounder is None:
         confounder = get_random_bytes(cls.blocksize)
     basic_plaintext = confounder + _zeropad(plaintext, cls.padsize)
     hmac = HMAC_HASH(ki.contents, basic_plaintext, cls.hashalgo)
     return cls.basic_encrypt(ke, basic_plaintext) + hmac[:cls.macsize]
示例#2
0
    def encrypt(cls, key, keyusage, plaintext, confounder):
        if confounder is None:
            confounder = get_random_bytes(8)
        ki = HMAC_HASH(key.contents, cls.usage_str(keyusage), hashes.MD5)
        cksum = HMAC_HASH(ki, confounder + plaintext, hashes.MD5)
        ke = HMAC_HASH(ki, cksum, hashes.MD5)

        encryptor = Cipher(
            ciphers.ARC4(ke), None, default_backend()).encryptor()
        ctext = encryptor.update(confounder + plaintext)

        return cksum + ctext