我正在通过其中一个处于活动状态的python配方,并找到了以下代码。 我想出了以下4个问题。 非常感谢任何指导和解释。
Q ::我无法确切地弄清楚为什么在“k = long(sys.argv [2])”行的第一个位置从用户那里获取“密钥随机种子”? 特别是因为,这个值'k'似乎没有在代码的后半部分使用?
其次,在加密和解密代码的部分,语句“bytearray [i] -random.randint(0,255)%256”的确切含义是什么? 这是否意味着每个字符的unicode值在加密期间移位或移位,并在解密时重新移回其原始值?
第三,“bytearray = map(ord,f1.read())”是否计算文件中每个字符的unicode点值?
最后,由于在加密和解密中使用随机数,因此什么因素可以保证加密文件的解密是准确的? 种子价值“k”与此有什么关系?
以下是我正在研究的代码。
非常感谢您的指导,提前致谢# encdec.py
import sys
import random
if len(sys.argv) != 5:
print "Usage: encdec.py e/d longintkey [path]filename1 [path]filename2"
sys.exit()
k = long(sys.argv[2]) # key
random.seed(k)
f1 = open( sys.argv[3], "rb")
bytearr = map (ord, f1.read () )
f2 = open( sys.argv[4], "wb" )
if sys.argv[1] == "e": # encryption
for i in range(len(bytearr)):
byt = (bytearr[i] + random.randint(0, 255)) % 256
f2.write(chr(byt))
if sys.argv[1] == "d": # decryption
for i in range(len(bytearr)):
byt = ((bytearr[i] - random.randint(0, 255)) + 256 ) % 256
f2.write(chr(byt))
f1.close()
f2.close()