為檔案建立 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
*/
macOS大規模客製化視窗回覆:為檔案建立 MD5 雜湊值我想當我進行一些類似的檢查時,我確實使用了類似的東西(從那時起我只是將這些文件移至版本控制並使用它來確保使用正確的文件)。
對於 JMP 表,還有「內部」<< Checksum() 訊息

我已經在“預覽資料表”類別上測試過使用它,它似乎運作得很好。由於“僅供內部使用”,不確定它的穩健性如何。
回覆:為檔案建立 MD5 雜湊值感謝@jthi ,該資料表訊息似乎是 v18 中的新訊息,並且適用於 JMP 資料表。我的需要是更通用的目的,適用於任何類型的檔案(.JMP、.JMPADDIN、.JMPXXXXX、.DOCX、.XLSX、.TXT,...)
回覆:為檔案建立 MD5 雜湊值如果@Craige_Hales對此表示讚賞,那麼我一定走在正確的道路上!
回覆:為檔案建立 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_/腳本/md5_file.py
MD5 /Users/_me_/Scripts/md5_file.py:d175790247060d7e415516794660216f