私はPythonの初心者です。ブートストラップ+パスワード+ブートストラップを+:私はこのそのアルゴリズムを使用してSHA1ダイジェストを作成する必要がスリフトプロトコルにスリフトオブジェクトをSHA1ダイジェストに変換する
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)
}
を使用してサーバで動作するようにしてみてください。
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を使用して、それを行う方法を説明できますか?
ありがとうございます!
ませんでは、これは正しくありません。 C++コードを注意深く見てください。私はstr(ブートストラップ)を理解しているので、これはオブジェクトの文字列表現ですが、ブートストラップから2バイトの文字列表現が必要です。 ブートストラップは構造体(64ビット符号付き整数)です。 str(bootstrap.client)+ str(bootstrap.server) - も正しくありません。 – Ilya