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) :

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 bute, dès le début, sur ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
key = base64.b32decode(key.upper() + '=' * ((8 - len(key)) % 8))
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.

Pourriez-vous me confirmer mon hypothèse ?

Merci, par avance, pour vos conseils.

Bien cordialement.