This function calculates a 128 bit checksum for arrays and files.
- data (matrix, string): Data array or file name. Either numerical or CHAR array. Currently only files and arrays with up to 2^32 bytes (2.1GB) are accepted. - input (string): Type of the input, optional. Default: 'Char'. 'File': Data is a file name as string. The digest is calculated for this file. 'Char': Data is a char array to calculate the digest for. Only the ASCII part of the Matlab CHARs is used, such that the digest is the same as if the array is written to a file as UCHAR, e.g. with FWRITE. 'Unicode': All bytes of the input are used to calculate the digest. This is the standard for numerical input. - output (string, optional): Format of the output. Just the first character matters. Optional, default: 'hex'. - 'hex': [1 x 32] string as lowercase hexadecimal number. - 'HEX': [1 x 32] string as uppercase hexadecimal number. - 'Dec': [1 x 16] double vector with UINT8 values. - 'Base64': [1 x 22] string, encoded to base 64 (A:Z,a:z,0:9,+,/).
Three methods to get the MD5 of a file: 1. Direct file access (recommended): MD5 = CalcMD5(which('CalcMD5.m'), 'File') 2. Import the file to a CHAR array (binary mode for exact line breaks!): FID = fopen(which('CalcMD5.m'), 'rb'); S = fread(FID, inf, 'uchar=>char'); fclose(FID); MD5 = CalcMD5(S, 'char') 3. Import file as a byte stream: FID = fopen(which('CalcMD5.m'), 'rb'); S = fread(FID, inf, 'uint8=>uint8'); fclose(FID); MD5 = CalcMD5(S, 'unicode'); // 'unicode' can be omitted here
Author: Jan Simon, Heidelberg, (C) 2009-2010 J@n-Simon.De License: This program is derived from the RSA Data Security, Inc.
MD5 Message Digest Algorithm, RFC 1321, R. Rivest, April 1992