在文件下载服务中,为了保证文件在传输过程中不被修改,文件的签名是必须的参数,以保证用户可以校验自己下载的文件是否被篡改。

以下是Java实现的文件MD5签名生成:

private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',

'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

public static String md5(File file) {

FileInputStream fileInputStream = null;

try {

fileInputStream = new FileInputStream(file);

byte[] buffer = new byte[1024];

MessageDigest complete = MessageDigest.getInstance("MD5");

int numRead = -1;

while ((numRead = fileInputStream.read(buffer)) != -1) {

complete.update(buffer, 0, numRead);

}

return getFormattedText(complete.digest());

} catch (Exception e) {

e.printStackTrace();

return null;

} finally {

try {

if (fileInputStream != null) {

fileInputStream.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

private static String getFormattedText(byte[] bytes) {

int len = bytes.length;

StringBuilder buf = new StringBuilder(len * 2);

for (int j = 0; j < len; j++) {

buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);

buf.append(HEX_DIGITS[bytes[j] & 0x0f]);

}

return buf.toString();

}

0

相关

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐