我有一个包含300列的df,但是如果我将df作为csv的话,我想对其进行加密并允许其他人使用密钥解密ID
的一列。
这可能吗?
我知道如何对列进行哈希处理,但是据我所知,我无法对其进行哈希处理,也无法为某人提供对其进行哈希处理的密钥。
先谢谢您。
编辑:
df
id
1
2
3
@Wen是一个很好的例子:
(1:2), (2:3),(3:4)
新df
id
2
3
4
答案 0 :(得分:1)
我建议使用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数据类型不容易序列化,但是如果您只需要列名或类似的名称,则可以很好地工作。
答案 1 :(得分:1)
您可以使用Crypto.Cipher库中的AES。我编写了一些辅助函数来加密pandas数据框中的列集。如果有帮助,请参见以下示例:https://github.com/bennywij/junk-drawer/blob/master/secret_pandas.py
答案 2 :(得分:0)
我认为您可以这样做
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