Python использует apply или map для вычисления значений хеш-функции NTLM - PullRequest
0 голосов
/ 07 декабря 2018

Я работаю с паролями и хотел вычислить их значение хеш-функции NTLM, поэтому я протестировал hashlib и binascii для хэширования пароля, и это сработало.См. Следующее:

 import hashlib,binascii

 hash = hashlib.new('md4', "thisisastrongpassword".encode('utf-16le')).digest()
 password = "thisisastrongpassword"
 print "Password before hash: ",password
 print "Hashed password: ",binascii.hexlify(hash)

Вывод:

 Password before hash:  thisisastrongpassword
 Hashed password:  912ed96fab781cce35f3b700cff7123c

Я хочу попробовать это на большом наборе данных, хранящемся в кадре данных с одним столбцом.Мне не нужны операторы печати, все, что я ищу, это хэш-значение.Есть хороший способ использовать карту или применить к следующему df?

df1
 column_1
 Jimbob@@$
 Jimbob@@$
 Jimbob@@%
 Jimbob@@%
 Jimbob@@&
 Jimbob@@*
 Jimbob@@@
 Jimbob@@@
 JimbobJimmy
 JimbobJimmy
 Jimbob_005
 Jimbob_005
 Jimbob_0053
 Jimbob_0053
 Jimbob_0055

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете просто определить функцию для хэширования ваших паролей и использовать apply или map:

def hasher(p):
    hash_ = hashlib.new('md4', p.encode('utf-16le')).digest()
    return binascii.hexlify(hash_)

df.column_1.apply(hasher)
# or 
df.column_1.map(hasher)

Тест:

>>> hasher('thisisastrongpassword')
# b'912ed96fab781cce35f3b700cff7123c'

>>> df.column_1.apply(hasher)
0     b'2b1349acddf4ad6802f18d3a6abaa84f'
1     b'2b1349acddf4ad6802f18d3a6abaa84f'
2     b'c36b0a1847b70be9c6746fcd5de3a916'
3     b'c36b0a1847b70be9c6746fcd5de3a916'
4     b'5cb8d96c0f2ed5c7f758379c875cdf79'
5     b'c11549aa7b217a141b51b74eaed0fbdf'
6     b'3590ebf6c9c1380ab8c9648bed6ce2c8'
7     b'3590ebf6c9c1380ab8c9648bed6ce2c8'
8     b'5e6de5fad20db51b594197d6b0213136'
9     b'5e6de5fad20db51b594197d6b0213136'
10    b'719b5aa4e400c02ad401f324262214c2'
11    b'719b5aa4e400c02ad401f324262214c2'
12    b'd6524a455013f156082a278d14b311d4'
13    b'd6524a455013f156082a278d14b311d4'
14    b'98cb6c0caa0bc159d8a10b7387c06caa'
Name: column_1, dtype: object
...