amv1991

Hash para strings

Jan 22nd, 2021 (edited)
371
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Módulo com as funções hash
  2. import hashlib
  3.  
  4. #Conteúdo com o qual os hashes serão gerados
  5. palavra = "Python"
  6.  
  7. #Se a variável fosse declarada da seguinte forma não haveria necessidade de conversões para bytes
  8. #palavra = b"Python"        #A letra b (BÊ minúsculo) indica que o conteúdo é do tipo bytes
  9.  
  10. #É necessário converter a string para bytes, e o hexdigest deixa a impressão mais legível
  11. print("\nHashes:")
  12. print("   MD5:", hashlib.md5(palavra.encode()).hexdigest())
  13. print("  SHA1:", hashlib.sha1(palavra.encode()).hexdigest())
  14. print("SHA224:", hashlib.sha224(palavra.encode()).hexdigest())
  15. print("SHA256:", hashlib.sha256(palavra.encode()).hexdigest())
  16. print("SHA384:", hashlib.sha384(palavra.encode()).hexdigest())
  17. print("SHA512:", hashlib.sha512(palavra.encode()).hexdigest())
  18.  
  19. #Tamanho dos blocos de hash, veja bem, é o tamanho do bloco com o qual o hash é gerado
  20. print("\nBlock size:")
  21. print("   MD5:", hashlib.md5(palavra.encode()).block_size)
  22. print("  SHA1:", hashlib.sha1(palavra.encode()).block_size)
  23. print("SHA224:", hashlib.sha224(palavra.encode()).block_size)
  24. print("SHA256:", hashlib.sha256(palavra.encode()).block_size)
  25. print("SHA384:", hashlib.sha384(palavra.encode()).block_size)
  26. print("SHA512:", hashlib.sha512(palavra.encode()).block_size)
  27.  
  28. #Função para imprimir um hash com sal (tipo uma senha)
  29. #A função pbkdf2_hmac() recebe 4 argumentos:
  30. #   1- O nome do tipo de hash
  31. #   2- O conteúdo (convertido em bytes) com o qual será gerado o hash
  32. #   3- O sal (convertido em bytes) com o qual será gerado o hash
  33. #   4- E o número de vezes que o processo será repetido (tipo o hash do hash)
  34. #   PS: Para visualizar melhor o resultado foi convertido com o hex(), pois pbkdf2_hmac não possui hexdigest()
  35. #   Resumindo:  hashlib.pbkdf2_hmac(NOME, PALAVRA, SAL, REPETIÇÕES).hex()
  36. print("\nHashes com sal:")
  37. print("   MD5 com sal:", hashlib.pbkdf2_hmac("md5", palavra.encode(), "salt".encode(), 100).hex())
  38. print("  SHA1 com sal:", hashlib.pbkdf2_hmac("sha1", palavra.encode(), "salt".encode(), 100).hex())
  39. print("SHA224 com sal:", hashlib.pbkdf2_hmac("sha224", palavra.encode(), "salt".encode(), 100).hex())
  40. print("SHA256 com sal:", hashlib.pbkdf2_hmac("sha256", palavra.encode(), "salt".encode(), 100).hex())
  41. print("SHA384 com sal:", hashlib.pbkdf2_hmac("sha384", palavra.encode(), "salt".encode(), 100).hex())
  42. print("SHA512 com sal:", hashlib.pbkdf2_hmac("sha512", palavra.encode(), "salt".encode(), 100).hex())
  43.  
  44. #O nome do tipo de hash pode ser obtido da seguinte forma, em tese é o nome normal em letras minúsculas
  45. print("\nNomes dos tipos de hash:")
  46. print("   MD5:", hashlib.md5().name)
  47. print("  SHA1:", hashlib.sha1().name)
  48. print("SHA224:", hashlib.sha224().name)
  49. print("SHA256:", hashlib.sha256().name)
  50. print("SHA384:", hashlib.sha384().name)
  51. print("SHA512:", hashlib.sha512().name)
  52.  
  53. input("\nAperte ENTER para sair...")
RAW Paste Data