Bonjour,
Je cherche à traduire un programme de Python vers Windev.
N'y connaissant rien (à mon grand regret) à Python j'ai du mal à interpréter certaines syntaxes.
Voilà le code (source : https://github.com/susam/mintotp) :
Je bute, dès le début, sur ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #!/usr/bin/env python3 import base64 import hmac import struct import sys import time def hotp(key, counter, digits=6, digest='sha1'): key = base64.b32decode(key.upper() + '=' * ((8 - len(key)) % 8)) counter = struct.pack('>Q', counter) mac = hmac.new(key, counter, digest).digest() offset = mac[-1] & 0x0f binary = struct.unpack('>L', mac[offset:offset+4])[0] & 0x7fffffff return str(binary)[-digits:].zfill(digits) def totp(key, time_step=30, digits=6, digest='sha1'): return hotp(key, int(time.time() / time_step), digits, digest) def main(): args = [int(x) if x.isdigit() else x for x in sys.argv[1:]] for key in sys.stdin: print(totp(key.strip(), *args)) if __name__ == '__main__': main()
Je traduis ce code comme ça (mais il est fort possible que je fasse fausse route), la chaîne (contenant la clé) est transformée en majuscule puis elle est complétée sur la droite avec le sybol "=" jusqu'à l'obtention d'une chaîne d'une longueur de 8 caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part key = base64.b32decode(key.upper() + '=' * ((8 - len(key)) % 8))
Pourriez-vous me confirmer mon hypothèse ?
Merci, par avance, pour vos conseils.
Bien cordialement.
Partager