【问题标题】:Hash a column in CSV and output in Base64散列 CSV 中的列并以 Base64 输出
【发布时间】:2023-02-16 23:03:41
【问题描述】:

仍然对 Python 有所涉猎,但我的目标是读取 CSV 文件并使用 SHA256 散列特定列,然后以 Base64 输出。

这是需要进行的转换的示例 这个计算器可以在https://www.liavaag.org/English/SHA-Generator/找到

这是我目前的代码

import hashlib
import csv
import base64

with open('File1.csv') as csvfile:

    with open('File2.csv', 'w') as newfile:

        reader = csv.DictReader(csvfile)

        for i, r in enumerate(reader):
            #  writing csv headers
            if i == 0:
                newfile.write(','.join(r) + '\n')

            # hashing the 'CardNumber' column
            r['consumer_id'] = base64.b64encode(hashlib.sha256(r['consumer_id']).encode('utf-8')).digest()
            
            # writing the new row to the file with hashed 'CardNumber'
            newfile.write(','.join(r.values()) + '\n')

我收到的错误是

r['consumer_id'] = base64.b64encode(hashlib.sha256(r['consumer_id']).encode('utf-8')).digest()
TypeError: Strings must be encoded before hashing

【问题讨论】:

  • 只需将关闭的括号)移到r["consumer_id"]base64.b64encode(hashlib.sha256(r['consumer_id'].encode('utf-8'))).digest()之后。
  • @MattDMo 更正后,还需要重新home digest()

标签: python csv hash base64


【解决方案1】:

你走在正确的轨道上,只需要一步一个脚印,然后再一次完成所有操作,看看它是如何组合在一起的:

import hashlib
import base64

text = r"1234567890"
encoded = text.encode('utf-8')
encoded = hashlib.sha256(encoded).digest()
encoded = base64.b64encode(encoded)
print(text, encoded)

那应该给你:

1234567890 b'x3Xnt1ft5jDNCqERO9ECZhqziCnKUqZCKreChi8mhkY='

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2014-08-11
    • 2014-09-05
    • 1970-01-01
    • 2020-01-18
    • 2023-01-25
    相关资源
    最近更新 更多