TypeError: must be string oder buffer, kein int

ich versuche zu lösen, die Rainbow Tables Problem mit der Passwort-Verschlüsselung und kommen nur so weit.

import sys
import random
import hashlib

def mt_rand (low = 0, high = sys.maxint):
    """Generate a better random value
    """
    return random.randint (low, high)

def substr (s, start, length = None):
    """Returns the portion of string specified by the start and length
    parameters.
    """
    if len(s) >= start:
        return False
    if not length:
        return s[start:]
    elif length > 0:
        return s[start:start + length]
    else:
        return s[start:length]

def unique_salt():
    return substr(hashlib.sha1(mt_rand()),0,22)

password = "12345"
salt = unique_salt()
hash = hashlib.sha1(salt + password).hexdigest()
print(hash)

Bin ich immer diese Fehlermeldung:

Traceback (most recent call last):
  File "C:/Users/Ajay/PycharmProjects/itertools/test.py", line 27, in <module>
    salt = unique_salt()
  File "C:/Users/Ajay/PycharmProjects/itertools/test.py", line 24, in unique_salt
    return substr(hashlib.sha1(mt_rand()),0,22)
TypeError: must be string or buffer, not int

Ich weiß, ich bin fehlt etwas sehr trivial, kann aber nicht bekommen, wo ich vermisst werde.
Bitte Helfen Sie.

  • hashlib.sha1 braucht einen string, der gehasht, aber Sie setzen eine ganze Zahl. Was willst du hash?
  • Ich möchte hash-Passwort, das ist eine string.
  • Und was ist der unique_salt Funktion für?
  • Ich möchte eine zufällige Zeichenfolge generiert für jeden Benutzer und für die Verwendung der einzigartigen Salz.
  • Relevante Artikel: crackstation.net/hashing-security.htm
  • Du machst es falsch. 1) Sie RNG ist zu schwach. Verwenden SystemRandom statt 2) verwenden Sie eine Allzweck-crypto-hash (SHA-1, SHA-2, etc.) statt eine spezielle Passwort-hash.

InformationsquelleAutor ajknzhol | 2014-01-15
Schreibe einen Kommentar