Je cherche à traduire un programme de Python vers Windev.
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:
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:
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.