Rumah > pembangunan bahagian belakang > Tutorial Python > Dijana OTP menggunakan python3

Dijana OTP menggunakan python3

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-09-03 17:03:02
asal
1029 orang telah melayarinya

Since we were not allowed to have MFA together with the same application we are using, I got an idea from my leader to just have a generated OTPs.

import time
import hmac
import base64
import struct
import hashlib

def generate_otp(secret, interval=30, digits=6):
    # Decode the base32 encoded secret
    key = base64.b32decode(secret)

    # Calculate the number of time intervals since the Unix epoch
    counter = int(time.time()) // interval

    # Convert the counter to bytes
    msg= struct.pack(">Q", counter)

    # Create the HMAC hash using SHA-1
    hmac_hash = hmac.new(key, msg, hashlib.sha1).digest()

    # Get the dynamic offset from the last nibble of the hash
    offset = hmac_hash[-1] & 0x0F

    # Extract a 4-byte dynamic binary code form the hash using the offset
    code = struct.unpack(">I", hmac_hash[offset:offset + 4]) [0] & 0x7FFFFFFF

    # Modulus operation to get the final OTP
    otp = code % (10 ** digits)

    return str(otp).zfill(digits)

# Lists for secret keys and remarks
secret_keys_with_titles = {
    "[name]": "[secret_key]",
    "VAR": "ABDCDEFGHIJKLMNO",
    "VER": "PQRSTUVWXYZ12345",
    "VIR": "6789101112131415"
}

# ANSI escape codes for different color
colors = [
    "\033[91m", # Red
    "\033[92m", # Green
    "\033[94m", # Blue
    "\033[93m", # Yellow
    "\033[96m", # Cyan
]
print()
# Generate the OTPs for all secret keys
otps = {title: generate_otp(secret) for title, secret in secret_keys_with_titles.items()}

# Output the OTPs in horizontal way
output = []
for i, (title, otp) in enumerate(otps.items()):
    color = colors[i % len(colors)] # Rotate through colors
    output.append(f"{color}{title}: {otp}\033[0m") #\033[0m resets the color

print(" | ".join(output))
print()

Salin selepas log masuk

So, this is how it look on your terminal:

Generated OTP using python3

Atas ialah kandungan terperinci Dijana OTP menggunakan python3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan