Study Record

[암호 프로그래밍] 해시 함수 관련 프로그램 본문

암호/프로그래밍

[암호 프로그래밍] 해시 함수 관련 프로그램

초코초코초코 2021. 12. 9. 11:20
728x90

파일에 대한 해시값을 출력해주는 프로그램

사용법 : checkHash.py <filename>

ex ) # checkHash.py /python/des.sh

 

# vi checkHash.py

#!/usr/bin/python3
import sys
import os
import subprocess


def main():

    if len(sys.argv) < 2:
        print("Usage: " + sys.argv[0] + " <filename>")
        sys.exit(1)

    cmdList = ['md5sum', 'shasum', 'sha1sum',
               'sha224sum', 'sha256sum', 'sha384sum', 'sha512sum']

    for n in range(1, len(sys.argv)):
        fileName = sys.argv[n]
        if os.path.exists(fileName):
            print("=" * 40)
            print(fileName, "'s hash values result")
            for cmd in cmdList:
                cmdText = cmd + " " + fileName + " | awk '{print $1}'"
                output = subprocess.check_output(cmdText, shell=True).decode('ascii').rstrip()
                print("%s : %s" % (cmd, output))
        else:
            print(fileName, "is not exits")
        print("=" * 40)


if __name__ == '__main__':
    main()

 

파일과 해시값을 인자값으로 파일의 해시값이 어떤 해시 알고리즘을 사용했는지 알려주는 프로그램

사용법 : checkHash2.py <filename> <hash value>

ex ) # checkHash2.py /python/des.sh 605461cff3ae2829914f10174871eefac16b7602

 

# vi checkHash2.py

#!/usr/bin/python3
import sys
import os
import subprocess


def compareHashValue(fileName, hashValue):
    cmdList = [['md5sum', 'MD5'], ['sha1sum', 'SHA1'],
               ['sha224sum', 'SHA224'], ['sha256sum', 'SHA256'],
               ['sha384sum', 'SHA384'], ['sha512sum', 'SHA512']]

    for cmd, algorithm in cmdList:
        if os.path.exists(fileName):
            cmdText = cmd + " " + fileName + " | awk '{print $1}'"
            output = subprocess.check_output(cmdText, shell=True).decode('ascii')[:-1]
            if hashValue == output:
                print(algorithm, "Hash Algorithm")
                return
        else:
            print(fileName, "is not exits")

    print("Error: Unknown Hash Algorithm")


def main():
    if len(sys.argv) < 3:
        print("Usage: " + sys.argv[0] + "  <file name> <Hash Value>")
        sys.exit(1)

    file = sys.argv[1]
    hashValue = sys.argv[2]
    compareHashValue(file, hashValue)


if __name__ == '__main__':
    main()

728x90