Jeśli zadzwonię do os.urandom (64), otrzymam 64 losowe bajty. W nawiązaniu do Convert bytes to a Python string PróbowałemJak mogę przekonwertować python urandom na ciąg znaków?
a = os.urandom(64)
a.decode()
a.decode("utf-8")
ale dostałem błąd Traceback stwierdzając, że bajty nie są w UTF-8.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
z bajtów
b'\x8bz\xaf$\xb6\x93q\xef\x94\x99$\x8c\x1eO\xeb\xed\x03O\xc6L%\xe70\xf9\xd8
\xa4\xac\x01\xe1\xb5\x0bM#\x19\xea+\x81\xdc\xcb\xed7O\xec\xf5\\}\x029\x122
\x8b\xbd\xa9\xca\xb2\x88\r+\x88\xf0\xeaE\x9c'
Czy istnieje fullproof metoda dekodowania tych bajtów w jakiś ciąg znaków? Generuję sudo losowych tokenów, aby śledzić powiązane dokumenty w wielu silnikach baz danych.
Odd sposób to zrobić ... Dlaczego nie wystarczy mieć bardziej „centralną” db, który generuje własny identyfikator, który odnosi się do innych identyfikatorów ... ? Lub, zamiast używać 'urandom' - dlaczego nie użyć UUID4 lub podobnego? –
Czy można to również wykorzystać do generowania losowego materiału siewnego? – Pinocchio
Django generuje losową logikę ciągów. https://github.com/django/django/blob/master/django/utils/crypto.py#L51 – bgth