Шифрование значений столбца с использованием Pandas - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь зашифровать значения некоторых столбцов, но зашифрованные значения оказываются идентичными для всех ячеек!

from cryptography.fernet import Fernet
import pandas as pd 

# already generated the key using Fernet method in a separate file. Retrieving now
file = open ("key.key", "rb")
key = file.read()
file.close ()

record = pd.read_excel("test.xlsx")

#list of columns whose values are to be encrypted 
encrypt_cols = ["IPFP APPLICATION ID","NAME OF IPFP FELLOW", "CNIC", "DATE OF BIRTH", 
                "AGE", "PRIMARY EMAIL", "PRIMARY CONTACT", "CURRENT MAILING ADDRESS", "Ticket No."]


#go inside each column
for i in range (len(encrypt_cols)):
    #go inside each row of the current column  
    for j in range (len(record)): 
        f = Fernet (key)
        #convert to string as some columns have integer based values 
        message = str(record.iloc[j, record.columns.get_loc(encrypt_cols[i])]) 
        #encrpyt the cell value after encoding it to bytes 
        encrpyted = f.encrypt (message.encode())
        #why is every encrypted message identical?
        print (encrypted)

Однако, когда я пробую этот метод самостоятельно, просто чтобы проверить, неправильный ли код, шифрование работает!

for i in encrypt_cols: 
    f = Fernet (key)
    temp = f.encrypt (str(i).encode()) #different encryption for each string! 
    res = f.decrypt (temp) #recovers original message successfully! 
    print (res.decode())

Я не могу понять, что идет не так. Может ли кто-нибудь помочь мне увидеть, что я пропустил?

1 Ответ

0 голосов
/ 16 июня 2020

Что-то, связанное со следующей частью вашего кода, я думаю

file = open ("key.key", "rb")
key = file.read()
file.close ()

Вместо этого я использовал

key = Fernet.generate_key()

, тогда зашифрованные значения уникальны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...