在linux下,大家常使用md5算法对文件进行签名。
在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。
linux 下 shell命令 ,制作md5码也用于软件的md5校验
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。
- -- - - -- - - -- - - -- - - - -- - - - - -- - - -- - - -- - - -- - - -- - - - -- - - - - -- - - -- - - -
平时在程序中也时常需要对文件进行md5签名,代码如下
- import java.io.IOException;
- import java.io.InputStream;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import org.apache.commons.codec.binary.Hex;
- /**
- * 2012-9-10 tracy.liuy
- */
- public class MD5Util {
- public static String getDigest(InputStream is, MessageDigest md, int byteArraySize)
- throws NoSuchAlgorithmException,
- IOException {
- md.reset();
- byte[] bytes = new byte[byteArraySize];
- int numBytes;
- while ((numBytes = is.read(bytes)) != -1) {
- md.update(bytes, 0, numBytes);
- }
- byte[] digest = md.digest();
- String result = new String(Hex.encodeHex(digest));
- return result;
- }
- }
调用代码如下:
- MessageDigest md = MessageDigest.getInstance("MD5");
- String digest = MD5Util.getDigest(new FileInputStream(httpFile), md, 2048);