Pyyhon加密代码 - 帮助我理解Python代码的逻辑,其中包含一些加密逻辑

时间:2016-06-20 08:45:53

标签: python

我有一个python代码。我对python很新。有人可以解释这段代码的剂量。

据我所知,这段代码试图解密ID。 我们使用CSV文件传入ID。我无法逐行理解逻辑。特别是hashfn.hexdigest和插入行

import csv
import hashlib
seed_val = b'197504'
outfile = open('ID_nos_hashed.csv','a')
with open('ID_nos_input.csv', 'rb') as infile:
  for inline in infile.readlines():
    linearray = inline.split(',')
    first_item = linearray[0]
    hashfn = hashlib.sha1()
    hashfn.update(first_item)
    hashfn.update(seed_val)
    lc_num_hash = hashfn.hexdigest()
    uc_num_hash = lc_num_hash.upper()
    insert_list = []
    insert_list.append(first_item)
    insert_list.append(uc_num_hash)
    insert_string = ','.join(insert_list)+'\n'
    outfile.write(insert_string)
infile.close()
outfile.close()

1 个答案:

答案 0 :(得分:1)

此代码从CSV(逗号分隔值)创建哈希表 文件。它的运作如下。

  • 打开输出文件ID_nos_hashed.csv
  • 它会打开日期来源ID_nos_input.csv。它很可能是一个列表 CSVs,其中此文件的每一行都是数据记录。
  • 脚本提取每个数据的第一个条目(列) 记录并将其分配给first_item
  • 脚本计算哈希值

    hashfn = SHA-1(first_item || seed_val)

    其中'||'表示(字符串)连接运算符。

  • 该脚本将160位哈希值hashfn转换为十六进制字符串 uc_num_hash其中每个数字是数字或大写字母。因此,十六进制字母表是0123456789ABCDEF。

  • 然后将散列值的十六进制字符串(uc_num_hash)分配给uc_num_hash。
  • 脚本将第一行_item,uc_num_hash行附加到输出文件。

请注意,hashfn可以包含不可打印的字符。它是转换 进入十六进制字符串,使其具有人类可读性。

更多信息:

https://en.wikipedia.org/wiki/Hexadecimal

https://en.wikipedia.org/wiki/SHA-1

PS。:数据既不加密也不解密。这两个操作都需要密钥。此脚本只是从一组数据生成(反向索引)哈希表,以最大限度地减少访问单个条目的访问时间。