如何使用解密密钥对熊猫数据帧进行加密和解密?

时间:2018-08-31 13:08:21

标签: python python-3.x pandas encryption

我有一个包含300列的df,但是如果我将df作为csv的话,我想对其进行加密并允许其他人使用密钥解密ID的一列。

这可能吗?

我知道如何对列进行哈希处理,但是据我所知,我无法对其进行哈希处理,也无法为某人提供对其进行哈希处理的密钥。

先谢谢您。

编辑:

df

id
1
2
3

@Wen是一个很好的例子:

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

新df

id
2
3
4

3 个答案:

答案 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