Ich bin ein Neuling in Python. Ich versuche, mit Server unter Verwendung von Thrift ProtokollKonvertieren Thrift Objekt in SHA1 Digest
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)
}
Ich brauche erstellen SHA1-Digest mit dieser algoritm zu arbeiten: Bootstrap + Passwort + dem + Bootstrap.
Bootstrap erstellen Ich benutze diese:
dig = hashlib.sha1
bootstrap = AuthSalt(0, 0)
dig.update(bootstrap)
dig.update(password + who)
dig.update(bootstrap)
Aber Update Methode nur String-Argument Typ und ich kann nicht verstehen, wie Bootstrap in eine Zeichenfolge zu konvertieren.
In C++ dieser Code wie folgt aussieht:
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);
Kann jemand erklären, wie es mit Python zu tun?
Vielen Dank im Voraus!
Nein, das ist nicht richtig. Bitte schauen Sie sich den C++ Code genau an. Wie ich verstehe, str (Bootstrap) - das ist String Repräsentation von Objekt, aber ich brauche String-Darstellung von zwei Bytes aus Bootstrap. Bootstrap ist eine Struktur (64-Bit-Ganzzahl mit Vorzeichen). str (bootstrap.client) + str (bootstrap.server) - auch nicht korrekt. – Ilya