How to encrypt and decrypt pandas dataframe with decryption key?

风格不统一 提交于 2020-11-29 08:06:28

问题


I have a df with 300 columns but there is one column ID that I want to encrypt and allow anyone else with a key to decrypt if I give them the df as a csv.

Is this possible?

I know how to hash a column, but as far as I have read I can not unhash it or give someone a key to unhash it.

Thank you in advance.

edit:

df

id
1
2
3

@Wen is this a good example:

(1:2), (2:3),(3:4)

new df

id
2
3
4

回答1:


I'd recommend the python itsdangerous library. Here is a quick example:

from itsdangerous import URLSafeSerializer

s = URLSafeSerializer('secret-key')

print(s.dumps([1, 2, 3, 4]))

# 'WzEsMiwzLDRd.wSPHqC0gR7VUqivlSukJ0IeTDgo'

print(s.loads('WzEsMiwzLDRd.wSPHqC0gR7VUqivlSukJ0IeTDgo'))

# [1, 2, 3, 4]

The secret-key can be shared between you and the other trusted party to decrypt the strings or columns.

This does rely on serialization however and some python data types aren't easily serialized, but if you just need a column name or something like that, this could work well.




回答2:


I think you can do this way

key=dict(zip(np.arange(len(df)),df.id))
df.id=np.arange(len(df))
**# for the person do not have the key**

df
Out[640]:
   id
0   0
1   1
2   2


**# for the person who havde the key**

df.id=df.id.map(key.get)

df
Out[642]: 
   id
0   1
1   2
2   3



回答3:


You could use AES from the Crypto.Cipher library. I wrote some helper functions to encrypt sets of columns in a pandas dataframe. Examples here if helpful: https://github.com/bennywij/junk-drawer/blob/master/secret_pandas.py



来源:https://stackoverflow.com/questions/52116171/how-to-encrypt-and-decrypt-pandas-dataframe-with-decryption-key

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!