Well those differences seem pretty significant. Perhaps you are right and there is no optimized sha256 on macOS arm64.
I will go ahead and add a user preference to enable / disable it.
But looking at what file_info is stored in zip and is freely available:
Code:
typedef struct unz_file_info_s
{
uLong version; /* version made by 2 bytes */
uLong version_needed; /* version needed to extract 2 bytes */
uLong flag; /* general purpose bit flag 2 bytes */
uLong compression_method; /* compression method 2 bytes */
uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
uLong crc; /* crc-32 4 bytes */
uLong compressed_size; /* compressed size 4 bytes */
uLong uncompressed_size; /* uncompressed size 4 bytes */
uLong size_filename; /* filename length 2 bytes */
uLong size_file_extra; /* extra field length 2 bytes */
uLong size_file_comment; /* file comment length 2 bytes */
uLong disk_num_start; /* disk number start 2 bytes */
uLong internal_fa; /* internal file attributes 2 bytes */
uLong external_fa; /* external file attributes 4 bytes */
tm_unz tmu_date;
} unz_file_info;
I could create a key from the pre-calculated crc32 value converted to a hex string, and append the basename (not the full path) of the file, and the file size in bytes again converted to a string.
Then I could add and use a crc32 checksum calculator only when saving the epub.
That should pretty much make speed a non-issue. Might be worth a shot.