0

我在使用 python gnupg 时注意到,如果我签署一些数据并使用 pickle 将签署的数据保存到文件中,大量数据会与签署的数据一起保存。其中之一是unix时间的时间戳,例如以下行是时间戳的一部分:

p24
sS'timestamp'
p25
V1347364912

文档没有提到任何这些,这让我有点困惑。使用pickle加载文件后,我看不到任何提及时间戳或任何返回值的方式。但如果 pickle 正在保存它,它必须是 python 对象的一部分。这是否意味着我应该有一种方法可以在 python 中获取这些信息?我也想利用这些数据,我可以通过读取文件本身来做到这一点,但我正在寻找一种更简洁的方法来使用 gnupg 模块。

4

2 回答 2

1

gnupg 没有很好的文档记录,但是如果您检查它,您会看到除了通常使用的属性之外还有其他属性...

#234567891123456789212345678931234567894123456789512345678961234567897123456789

# core
import inspect
import pickle
import datetime

# 3rd party
import gnupg


def depickle():
    """ pull and depickle our signed data """
    f = open('pickle.txt', 'r')
    signed_data = pickle.load(f)
    f.close()
    return signed_data

# depickle our signed data
signed_data = depickle()
# inspect the object
for key, value in inspect.getmembers(signed_data):
    print key

其中之一是您的时间戳……恰如其分地命名为时间戳。既然你知道它,你可以很容易地使用它......

# use the attribute now that we know it
print signed_data.timestamp
# make it pretty
print datetime.datetime.fromtimestamp(float(signed_data.timestamp))

这感觉很啰嗦,但我认为这个讨论将受益于记录使用检查来识别未记录的属性,而不是仅仅说“使用 signed_data.timestamp”。

于 2012-09-12T18:57:48.790 回答
0

我发现文档中没有描述 python-gnupgSignVerify类的某些字段。您将不得不查看 python-gnupg 源代码:[PYTHONDIR]/Lib/site-packages/gnupg.py. 有一个Signhandle_status()填充与签名相关的所有变量/字段,包括timestamp字段。

于 2012-09-12T19:10:27.317 回答