2015-02-23 61 views
4

早上好,全部。使用熊貓將唯一號碼轉換爲md5哈希

我想將我的社會安全號碼轉換爲md5哈希十六進制數字。結果應該是每個社會安全號碼的唯一md5哈希十六進制數字。

我的數據格式如下:

ob = onboard[['regions','lname','ssno']][:10] 
ob 

    regions lname ssno 
0 Northern Region (R1) Banderas 123456789 
1 Northern Region (R1) Garfield 234567891 
2 Northern Region (R1) Pacino 345678912 
3 Northern Region (R1) Baldwin  456789123 
4 Northern Region (R1) Brody 567891234 
5 Northern Region (R1) Johnson  6789123456 
6 Northern Region (R1) Guinness 789
7 Northern Region (R1) Hopkins  891234567 
8 Northern Region (R1) Paul 891234567 
9 Northern Region (R1) Arkin 987654321 

我試着使用hashlib下面的代碼:

import hashlib 

ob['md5'] = hashlib.md5(['ssno']) 

這給我的錯誤,它必須是一個字符串不是列表。所以,我試過如下:

ob['md5'] = hashlib.md5('ssno').hexdigest() 



regions lname ssno md5 
0 Northern Region (R1) Banderas 123456789 a1b3ec3d8a026d392ad551701ad7881e 
1 Northern Region (R1) Garfield 234567891 a1b3ec3d8a026d392ad551701ad7881e 
2 Northern Region (R1) Pacino 345678912 a1b3ec3d8a026d392ad551701ad7881e 
3 Northern Region (R1) Baldwin  456789123 a1b3ec3d8a026d392ad551701ad7881e 
4 Northern Region (R1) Brody 567891234 a1b3ec3d8a026d392ad551701ad7881e 
5 Northern Region (R1) Johnson  678912345 a1b3ec3d8a026d392ad551701ad7881e 
6 Northern Region (R1) Johnson  789123456 a1b3ec3d8a026d392ad551701ad7881e 
7 Northern Region (R1) Guiness  891234567 a1b3ec3d8a026d392ad551701ad7881e 
8 Northern Region (R1) Hopkins  912345678 a1b3ec3d8a026d392ad551701ad7881e 
9 Northern Region (R1) Paul 159753456 a1b3ec3d8a026d392ad551701ad7881e 

這是非常接近我所需要的,但不顧一切的十六進制數出來相同的,如果社會安全號碼是不同的或沒有。我正在嘗試爲每個社會安全號碼獲取具有唯一十六進制數字的十六進制數字。

有什麼建議嗎?

+1

不要湊社會安全號碼,並認爲它提供*任何*某種混淆。社會保障號碼空間很小,對於任何人來說,無害的哈希都是微不足道的。 如果你關心你正在哈希的個人信息的隱私,你至少應該使用hmac模塊,而不是直接使用哈希。 – gps 2015-02-24 01:27:53

+0

非常感謝您花時間回覆此評論!非常有價值!我不知道哈希可以被扭轉。我將研究hmac模塊。再次謝謝你! – david 2015-02-24 13:37:14

回答

8

hashlib.md5將單個字符串作爲輸入 - 您無法像使用一些NumPy/Pandas函數一樣將值傳遞給它。因此,相反,你可以使用一個list comprehension打造MD5SUMS列表:

ob['md5'] = [hashlib.md5(val).hexdigest() for val in ob['ssno']] 
+0

絕對美麗!說得通。謝謝你的教育和幫助解決方案!正是我需要的! – david 2015-02-23 12:55:23