2017-02-17 1 views
0

단어를 암호화하고 해독 할 수있는 스크립트를 작성하려고합니다. 하지만 문제가있어서 이해할 수 없습니다. 내가 암호화하는 데 사용이 코드는 이것이다 : 나는 사전을 기반으로 해독하는 데 사용하고SHA256 암호화 및 해독 (Python 2.7) - 동일한 단어이지만 다른 해시

def encrypt(): 
    print "Enter string for encryption: \n" 
    rec = raw_input() 
    enkr =hashlib.sha256(rec).hexdigest() 
    print enkr 

을 코드하는 것은 이것이다 : 예를 들어

def decrypt(): 
    print "Enter hash for decryption: \n" 
    rec = raw_input() 
    print "Enter path of wordlist" 
    list = raw_input() 
    wordl=open(list,"r") 
    wordk = wordl.readlines() 
    for w in wordk: 
     w = hashlib.sha256(w).hexdigest() 
     if rec.lower() != w: 
      print "Not this " + w 
     elif rec.lower() ==w: 
      print "Found ! " + w 
      break 
     else: 
      print "Nothing found ! " 

이의 내가 "관리자에게"단어를 암호화하고 싶은 말은하자. 나는이 해시 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 을 얻고 내가 해독 할 때 나는 같은 기능이 fc8252c8dc55839967c58b9ad755a59b61b67c13227ddae4bd3f78a38bf394f7 내 질문은, 왜 내가 얻고있다 두 개의 서로 다른 해시를 얻을? 감사합니다, Khan

+0

백틱 기반 구문은 한 줄 미만의 코드 서식 문자열에 사용됩니다. 여러 줄짜리 블록의 경우 편집기에서'{} '버튼을 사용하여 각 줄을 4 칸씩 들여 쓰기 할 코드를 선택하거나 직접 공백을 추가하십시오. –

+2

'암호화'와 '암호 해독'으로하고있는 일을 잘못 설명하고 혼동 스럽기 때문에 설명하지 마십시오. 그리고'readlines'에서 얻은 문자열의 끝에서 개행 문자를 지우십시오. readlines에는 그것들이 포함되어 있습니다. raw_input은 – pvg

+0

이 아닙니다. SHA 256은 암호화가 아닙니다. – user2357112

답변

3

8c69…a918"admin"의 SHA256 해시입니다.

fc82…94f7"admin\n"의 SHA256 해시입니다.

file.readlines()에는 읽는 각 줄의 끝 부분에 후행 줄 바꿈이 있습니다. 이를 제거하려면 w.rstrip("\n")을 사용할 수 있습니다.

+0

감사합니다. 이제 모든 것이 명확합니다! – Djehenghizz

1

rec = raw_input()에는 개행 문자가 없습니다.

한편, for w in wordk:에 의해 반복되는 각 줄에는 후행 줄 바꿈이 있습니다.

따라서 해시를 수행하기 전에 rstrip("\n") 라인을 사용하거나 splitlines()을 사용하여 마지막 개행 문자를 없애야합니다.

+0

감사합니다. 지금은 이해합니다. – Djehenghizz