如何使用解密密钥对pandas数据框进行加密和解密?

6

我有一个包含300个列的数据框,但其中有一列 ID 我想要加密,并且只有当我给其他人一个解密密钥时,他们才能解密成csv格式查看。

是否可能实现这个需求?

我知道如何对列进行哈希运算,但据我所知我不能反向哈希或给别人一个用于反向哈希的密钥。

提前感谢您的帮助。

修改:

df

id
1
2
3

@问,这是一个很好的例子吗:
(1:2), (2:3),(3:4)

新的df

id
2
3
4

你需要使用第三方库。我建议使用 pycryptodome - t.m.adam
@t.m.adam 谢谢您的建议。我会尝试一些例子。 - RustyShackleford
为什么不用随机数替换它,然后只向那些人提供映射字典呢? - BENY
@Wen,我进行了编辑,我提供的示例是否符合您的要求? - RustyShackleford
4个回答

7

我建议使用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数据类型不容易序列化,但如果你只需要一个列名或类似的东西,这可能非常有效。我想在这里补充一点,这个过程仅仅是混淆了数据,而并没有真正地加密它。当我最初回答这个问题时,我并没有完全理解这一点。这种混淆可能已经足够满足您的需求,但请注意!从文档中得知:“接收者可以解码内容并查看包裹,但除非他们也拥有您的秘密密钥,否则他们无法修改内容。”文档

谢谢您的建议。如果我加密该列并将其保存为CSV文件,那么另一方是否只需读取CSV文件并应用解密密钥即可阅读该列? - RustyShackleford
他们需要迭代CSV中的每一行,并解密该列中的数据。另一种方法是仅在整个CSV输出上使用此库,并让它们一次性解密整个文件。或者,您可以编写一个简单的解密脚本,用户可以在CSV上运行,以便这些步骤自动发生。 - Dan Safee

6
你可以使用 cryptpandas
例如,如果你有一个 pandas 数据框架。
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. 更多信息在这里


1
我认为你可以这样做。
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

这个也可以工作,而且非常简单,但是我正在寻找创新的解决方案。无论如何,感谢你的辛勤工作。 - RustyShackleford

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接