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

Rus*_*ord 5 python encryption python-3.x pandas

我有一个包含 300 列的 df,但是ID我想加密其中一列,如果我将 df 作为 csv 提供给他们,则允许其他任何拥有密钥的人进行解密。

这可能吗?

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

先感谢您。

编辑:

df

id
1
2
3
Run Code Online (Sandbox Code Playgroud)

@Wen 这是一个很好的例子:

(1:2), (2:3),(3:4)
Run Code Online (Sandbox Code Playgroud)

新DF

id
2
3
4
Run Code Online (Sandbox Code Playgroud)

Dan*_*fee 6

我会推荐 pythonitsdangerous库。这是一个快速示例:

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]
Run Code Online (Sandbox Code Playgroud)

secret-key可你和其他可信方解密字符串或列之间共享。

然而,这确实依赖于序列化,并且某些 python 数据类型不容易序列化,但是如果您只需要列名或类似的东西,这可能会很好地工作。

我想在这里添加一个限定条件,即此过程只会混淆数据,但实际上并未对其进行加密。当我最初回答这个问题时,我并不完全理解。这种混淆可能足以满足您的需求,但请注意!从文档:

接收者可以解码内容并查看包裹,但除非他们也有您的密钥,否则他们无法修改内容。 文档


小智 6

您可以使用cryptpandas

举个例子,如果你有一个 pandas 数据框

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': ['one', 'one', 'four']})
Run Code Online (Sandbox Code Playgroud)

你可以将其加密为

import cryptpandas as crp

crp.to_encrypted(df, password='mypassword123', path='file.crypt')
Run Code Online (Sandbox Code Playgroud)

并将其解密为

decrypted_df = crp.read_encrypted(path='file.crypt', password='mypassword123')
Run Code Online (Sandbox Code Playgroud)

PS 更多信息请参见此处