파일에 대한 MD5 해시 생성저는 파일의 MD5 해시를 만드는 유틸리티를 만들고 싶습니다. 목적은 나중에 파일의 무결성(변경되지 않았는지)을 확인하는 데 사용할 해시를 갖는 것입니다. 제가 생각해 낸 기본 스크립트는 다음과 같습니다. 제가 달성하고자 하는 작업에 합리적이고 적절한가요?
/*
JMP JSL script to open data file as BLOB and calculate MD5 Hash
*/
Names Default To Here( 1 );
// substitute in your directory path and filename as strings below
dirpath = "";
// filename
filename = "";
//load file as text file Blob, and calculate the hexadecimal MD5 Hash
Char To Hex( Blob To Char( Blob MD5( Load Text File( dirpath || filename, blob ) ) ) );
/*
End script
*/
맥 OS대량 맞춤형윈도우Re: 파일의 MD5 해시 생성저는 그런 검사를 할 때 비슷한 것을 사용했던 것 같습니다. (그 이후로는 그런 파일을 버전 제어로 옮겨서 올바른 파일이 사용되는지 확인하고 있습니다.)
JMP 테이블에는 "내부" << Checksum() 메시지도 있습니다.

"미리보기 데이터 테이블" 클래스에서 이것을 사용해 보았고 잘 작동하는 듯했습니다. "내부 사용 전용"이기 때문에 얼마나 강력할지 잘 모르겠습니다.
Re: 파일의 MD5 해시 생성감사합니다 @jthi , 그 데이터 테이블 메시지는 v18에서 새로 나온 것 같고, JMP 데이터 테이블에서 작동할 겁니다. 제가 필요로 하는 것은 더 일반적인 용도인데, 모든 유형의 파일(.JMP, .JMPADDIN, .JMPXXXXX, .DOCX, .XLSX, .TXT, ...)에서 작동할 겁니다.
Re: 파일의 MD5 해시 생성@Craige_Hales가 이걸 칭찬했다면, 제가 옳은 길을 가고 있는 거겠죠!
Re: 파일의 MD5 해시 생성또는 Python의 hashlib을 사용할 수 있습니다.
import jmp
import sys, os, hashlib
from pathlib import Path
# Function to open a file and compute it's checksum
def file_cksum(a_filename):
digest = hashlib.md5()
try:
f = open(a_filename, 'rb') # open in binary mode
while True:
t = f.read(8192)
if len(t) == 0: break; # end of file
digest.update(t)
except:
print('file_cksum: Unexpected error: ', sys.exc_info()[0])
else:
f.close()
return digest.hexdigest()
jmp.run_jsl('''
local_path = Pick File("Chose File to checksum");
// Pick Directory on windows returns a leading / use Convert File Path()
If( Host is("Windows"),
local_path = Convert File Path( local_path, windows )
);
Python Send(local_path);
''')
print(local_path)
cksum = file_cksum(local_path)
print(f'MD5 {local_path}: {cksum}')
JSL Pick File()을 사용하여 md5_file.py 파일에 저장된 위 코드를 선택했습니다.
결과를 제공합니다:
/사용자/_me_/Scripts/md5_file.py
MD5 /Users/_me_/Scripts/md5_file.py: d175790247060d7e415516794660216f