所以,我已经开始使用加密编码,并且一直在尝试根据时间创建一个独特的加密密钥。到目前为止,这是我的代码:
from threading import Timer
from pyclbr import Function
import hashlib, binascii, time
key1=""
buffer1=""
buffer2=""
class RepeatedTimer(object):
def __init__(self, interval, function, *args, **kwargs):
self.timer=None
self.function=function
self.interval=interval
self.args=args
self.kwargs=kwargs
self.is_running=False
self.start()
def _run(self):
self.is_running=False
self.start()
self.function(*self.args,**self.kwargs)
def start(self):
if not self.is_running:
self.timer=Timer(self.interval,self._run)
self.timer.start()
self.is_running=True
def stop(self):
self.timer.cancel()
self.is_running=False
def generateKeys():
global key1
global buffer1
global buffer2
t=int((time.time())/10)
t=hashlib.sha1(str(t).encode('utf-8'))
t=t.hexdigest()
t=t.encode('utf-8')
t=binascii.hexlify(t)
t=t.decode('utf-8')
t=t[0:11]
t=int(t)>>5
buffer2=buffer1
buffer1=key1
key1=str(t)
def printKeys():
print("Keys : "+key1+" "+buffer1+" "+buffer2)
timerStart=RepeatedTimer(10,generateKeys())
#generateKeys();
timerStart2=RepeatedTimer(11,printKeys())
每当我运行上面的代码时,我都会收到错误:
Exception in thread Thread-49:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 923, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 1189, in run
self.function(*self.args, **self.kwargs)
File "/Users/Kiro/Documents/LiClipse Workspace/EncryptionFinal/pkg/enc_keygen.py", line 22, in _run
self.function(*self.args,**self.kwargs)
TypeError: 'str' object is not callable
Exception in thread Thread-50:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 923, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 1189, in run
self.function(*self.args, **self.kwargs)
File "/Users/Kiro/Documents/LiClipse Workspace/EncryptionFinal/pkg/enc_keygen.py", line 22, in _run
self.function(*self.args,**self.kwargs)
TypeError: 'NoneType' object is not callable
有谁知道为什么?我想要的是generateKeys()函数每隔10秒运行一次,printKeys()函数每11秒告诉我一次这些键(检查它是否正确地将键分配给全局变量)。
这比任何事情都更多的实验,但希望有助于修复此代码,因为我希望它能够正常运行。
答案 0 :(得分:0)
用你的行
timerStart=RepeatedTimer(10,generateKeys())
您正在将调用generateKeys()
的结果移交给__init__
方法。你真正想做的是交出功能本身。那你不能叫它:
timerStart = RepeatedTimer(10, generateKeys)