示例#1
0
 def __init__(self, unencrypted_password, salt, iterations, keylength, hashfunc):
     hashfunc = getattr(hashlib, hashfunc)
     logger.debug("hashfunc is:", hashfunc)
     # On our computer it takes around 1.4 seconds in 2013
     start_time = time.time()
     salt = base64.b64decode(salt)
     self.password = pbkdf2.pbkdf2_hex(str(unencrypted_password),
                                       salt, iterations, keylength, hashfunc)
     self.encrypt_time = round(time.time() - start_time, 3)
     logger.debug("Creating password took:", self.encrypt_time)
 def __init__(self, unencrypted_password, salt, iterations, keylength, hashfunc):
     hashfunc = getattr(hashlib, hashfunc)
     logger.debug("hashfunc is:", hashfunc)
     # On our computer it takes around 1.4 seconds in 2013
     start_time = time.time()
     salt = base64.b64decode(salt)
     self.password = pbkdf2.pbkdf2_hex(str(unencrypted_password),
                                       salt, iterations, keylength, hashfunc)
     self.encrypt_time = round(time.time() - start_time, 3)
     logger.debug("Creating password took:", self.encrypt_time)
def encode_password(pass_gen_fields, unencrypted_password):
    if isinstance(pass_gen_fields['salt'], bytes):
        salt = pass_gen_fields['salt']
    else:
        salt = bytes(pass_gen_fields['salt'], "utf-8")
    encrypted_password = pbkdf2.pbkdf2_hex(str(unencrypted_password), salt,
                                           pass_gen_fields['iterations'],
                                           pass_gen_fields['keylength'],
                                           pass_gen_fields['hashfunc'])

    pass_gen_fields.pop("unencrypted_password", None)
    pass_gen_fields["password"] = encrypted_password

    return pass_gen_fields
示例#4
0
def encode_password(pass_gen_fields, unencrypted_password):
    hashfunc = getattr(hashlib, pass_gen_fields['hashfunc'])

    salt = base64.b64decode(pass_gen_fields['salt'])
    encrypted_password = pbkdf2.pbkdf2_hex(str(unencrypted_password),
                                           pass_gen_fields['salt'],
                                           pass_gen_fields['iterations'],
                                           pass_gen_fields['keylength'],
                                           hashfunc)

    pass_gen_fields.pop("unencrypted_password", None)
    pass_gen_fields["password"] = encrypted_password

    return pass_gen_fields
    def test_pbkdf2_hex(self):
        """
        Test pbkdf2_hex function
        """

        for password, salt, iterations, keylen, expected_value in [
            ('password', b'salt', 1, 20,
             '0c60c80f961f0e71f3a9b524af6012062fe037a6'),
            ('password', b'salt', 2, 20,
             'ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957'),
            ('password', b'salt', 4096, 20,
             '4b007901b765489abead49d926f721d065a429c1'),
            ('passwordPASSWORDpassword',
             b'saltSALTsaltSALTsaltSALTsaltSALTsalt', 4096, 25,
             '3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038'),
            ('pass\x00word', b'sa\x00lt', 4096, 16,
             '56fa6aa75548099dcc37d7f03425e0c3'),
            ('password', b'ATHENA.MIT.EDUraeburn', 1, 16,
             'cdedb5281bb2f801565a1122b2563515'),
            ('password', b'ATHENA.MIT.EDUraeburn', 1, 32, ('cdedb5281bb2f80'
                                                           '1565a1122b256351'
                                                           '50ad1f7a04bb9f3a33'
                                                           '3ecc0e2e1f70837')),
            ('password', b'ATHENA.MIT.EDUraeburn', 2, 16,
             '01dbee7f4a9e243e988b62c73cda935d'),
            ('password', b'ATHENA.MIT.EDUraeburn', 2, 32, ('01dbee7f4a9e243e9'
                                                           '88b62c73cda935da05'
                                                           '378b93244ec8f48a99'
                                                           'e61ad799d86')),
            ('password', b'ATHENA.MIT.EDUraeburn', 1200, 32,
             ('5c08eb61fdf71e'
              '4e4ec3cf6ba1f55'
              '12ba7e52ddbc5e51'
              '42f708a31e2e62b1e13')),
            ('X' * 64, b'pass phrase equals block size', 1200, 32,
             ('139c30c0966bc32ba'
              '55fdbf212530ac9c5'
              'ec59f1a452f5cc9ad'
              '940fea0598ed1')),
            ('X' * 65, b'pass phrase exceeds block size', 1200, 32,
             ('9ccad6d468770cd'
              '51b10e6a68721be6'
              '11a8b4d282601db3'
              'b36be9246915ec82a'))
        ]:
            self.assertEqual(
                pbkdf2_hex(data=password,
                           salt=salt,
                           iterations=iterations,
                           keylen=keylen), expected_value)