为文件创建 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 /用户/_me_/Scripts/md5_file.py: d175790247060d7e415516794660216f