我有一个包含300个列的数据框,但其中有一列 ID
我想要加密,并且只有当我给其他人一个解密密钥时,他们才能解密成csv格式查看。
是否可能实现这个需求?
我知道如何对列进行哈希运算,但据我所知我不能反向哈希或给别人一个用于反向哈希的密钥。
提前感谢您的帮助。
修改:
df
id
1
2
3
@问,这是一个很好的例子吗:
(1:2), (2:3),(3:4)
新的df
id
2
3
4
我有一个包含300个列的数据框,但其中有一列 ID
我想要加密,并且只有当我给其他人一个解密密钥时,他们才能解密成csv格式查看。
是否可能实现这个需求?
我知道如何对列进行哈希运算,但据我所知我不能反向哈希或给别人一个用于反向哈希的密钥。
提前感谢您的帮助。
修改:
df
id
1
2
3
(1:2), (2:3),(3:4)
新的df
id
2
3
4
我建议使用Python的itsdangerous
库。这里是一个快速示例:
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]
secret-key
可以在你和其他可信任的方之间共享,以解密字符串或列。但是这确实依赖于序列化,有些Python数据类型不容易序列化,但如果你只需要一个列名或类似的东西,这可能非常有效。我想在这里补充一点,这个过程仅仅是混淆了数据,而并没有真正地加密它。当我最初回答这个问题时,我并没有完全理解这一点。这种混淆可能已经足够满足您的需求,但请注意!从文档中得知:“接收者可以解码内容并查看包裹,但除非他们也拥有您的秘密密钥,否则他们无法修改内容。”文档
cryptpandas
。import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3],
'B': ['one', 'one', 'four']})
你可以将其加密为
import cryptpandas as crp
crp.to_encrypted(df, password='mypassword123', path='file.crypt')
并将其解密为
decrypted_df = crp.read_encrypted(path='file.crypt', password='mypassword123')
P.S. 更多信息在这里。
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