我是 Python 的新手。我尝试使用 Thrift 协议使用服务器
struct AuthSalt {
1: required i64 client, /* random data */
2: required i64 server, /* data from previous answer */
}
struct AuthRequest {
1: required AuthSalt bootstrap,
2: required string who, /* login */
3: required string signature, /* SHA-1: bootstrap + password + who + bootstrap. */
}
exception NotAuthorisedException {
1: required string description
}
service Bookworm {
AuthResponse Authenticate( 1: required AuthRequest a, 2: required string locale )
throws ( 1: NotAuthorisedException e )
}
我需要使用这个算法来创建 SHA1 摘要:bootstrap + password + who + bootstrap。
要创建引导程序,我使用这个:
dig = hashlib.sha1
bootstrap = AuthSalt(0, 0)
dig.update(bootstrap)
dig.update(password + who)
dig.update(bootstrap)
但是更新方法参数类型只有字符串,我不明白如何将引导程序转换为字符串。
在 C++ 中,此代码如下所示:
SHA_CTX c;
::SHA1_Init(&c);
::SHA1_Update(&c, &bootstrap, sizeof(bootstrap));
::SHA1_Update(&c, password.c_str(), password.size());
::SHA1_Update(&c, who.c_str(), who.size());
::SHA1_Update(&c, &bootstrap, sizeof(bootstrap));
::SHA1_Final(digest, &c);
有人可以解释如何使用 python 做到这一点吗?
提前致谢!