java计算md5和sha1值

上传人:xiao****1972 文档编号:83805999 上传时间:2019-03-01 格式:DOC 页数:4 大小:34.16KB
返回 下载 相关 举报
java计算md5和sha1值_第1页
第1页 / 共4页
java计算md5和sha1值_第2页
第2页 / 共4页
java计算md5和sha1值_第3页
第3页 / 共4页
java计算md5和sha1值_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《java计算md5和sha1值》由会员分享,可在线阅读,更多相关《java计算md5和sha1值(4页珍藏版)》请在金锄头文库上搜索。

1、Java 计算md5和sha1值计算数据md5和sha1值,防数据被其它人修改. 有时程序要求一些重要数据保密或加密的, 如政府单位的公文归档的或盖章的, 公文一般是盖了章就要不能修改的, 为了防止修改数据, 我给出自已的思路.1、在公文盖章完成的同时,将数据写入file里保存在磁盘中,可以将file内容加密保存。然后计算file内容的sha1值和md5值,将两个值保存起来。2、当用户打开盖好章的公文时,程序取出公文的数据(数据库里的数据)进行计算md5和sha1值,然后if 在file里计算出来的md5和sha1值是不是相等,如果相等,那么数据库里的数据没有被修改过, 如果发现值不相等时,表

2、示数据库里的数据被他人动过,那么这份公文应该提示无效或公章失效等。3、人工判断数据库的数据是否真的被动过,可以找出数据库的数据,和file的内容进行对比。注: 这种做法不是绝对的,如果有更好的防数据修改的办法,欢迎一起探讨。以下给出的代码是计算md5和sha1值的计算方法。public class EncryptUtil public String text=;/* * Description:使用MD5加密指定的字符串. * param s * return * date Aug 12, 2011 * modify */public final static String MD5(Strin

3、g s) char hexDigits = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,a, b, c, d, e, f ;try byte strTemp = s.getBytes();MessageDigest mdTemp = MessageDigest.getInstance(MD5);mdTemp.update(strTemp);byte md = mdTemp.digest();int j = md.length;char str = new charj * 2;int k = 0;for (int i = 0; i 4 & 0xf;strk+ = hexDigits

4、byte0 & 0xf;return new String(str); catch (Exception ex) throw new RuntimeException(ex);/* * Description:加密指定的整型数,通常用来加密ID值! * 编码的原理是根据当前的currentTimeMillis在指定的位置插入其ID值,然后再附加 * ID值的长度来进行编码.System.currentTimeMillis获取的值为13位长度,即使100 * 年后也是这样,所以这个基本上是不变的! * param id * return * date Aug 12, 2011 * modify

5、*/private final static int ENCODE_ID_INSERT_INDEX = 5; / 插入的索引位置,0-12之间public final static String encodeId(int id) String _id = String.valueOf(id);if (id 9)return ;StringBuilder buf = new StringBuilder();buf.append(System.currentTimeMillis();for (int i = 0; i _id.length(); i+) buf.insert(ENCODE_ID_I

6、NSERT_INDEX, _id.charAt(i);buf.append(_id.length(); / 长度校验位return buf.toString();/* * Description:反编码ID后的字符串. * 注意,编码和解码的数字长度不能超过9位! * param str * return * date Aug 12, 2011 * modify */public final static int unencodeId(String str) String times = System.currentTimeMillis() + ;if (str = null | str.le

7、ngth() times.length()return 0;if (!str.matches(,)return 0;int len = Integer.parseInt(str.substring(str.length() - 1);if (str.length() != (times.length() + len + 1)return 0;return Integer.parseInt(new StringBuilder(str.substring(ENCODE_ID_INSERT_INDEX, ENCODE_ID_INSERT_INDEX + len).reverse().toString

8、();/* * Description計算二進制數據. * date 2012-05-17 */private static String byte2hex(byte b) / 二行制转字符串String hs = ;String stmp = ;for (int n = 0; n b.length; n+) stmp = (java.lang.Integer.toHexString(bn & 0XFF);if (stmp.length() = 1)hs = hs + 0 + stmp;elsehs = hs + stmp;return hs.toUpperCase();/* * Descri

9、ption:計算sha1值. * return sha1值 * date 2012-05-17 */public String getSha1()java.security.MessageDigest md = null;try /md = java.security.MessageDigest.getInstance(MD5); /也可以计算md5md = java.security.MessageDigest.getInstance(sha-1);byte byteText = this.text.getBytes();md.update(byteText);byte sha1 = md.

10、digest();return byte2hex(sha1); catch (NoSuchAlgorithmException e) e.printStackTrace();return null;/* * Description:計算MD5值. * return sha1值 * date 2012-05-17 */public String MD5()return MD5(this.text);/ 测试public static void main(String args) EncryptUtil eu=new EncryptUtil();eu.text=my 計算;System.out.p

11、rintln(eu.getSha1();System.out.println(eu.getMD5();/ 读取文件计算md5或sha1值File f=new File(f:/myfile.txt);try BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f),utf8);String tempString = null;String str=; / 一次读入一行,直到读入null为文件结束 while (tempString = reader.readLine() != null) str+=tempString; reader.close();eu.text=str; /文件内容System.out.println(eu.getSha1(); System.out.println(eu.getMD5(); catch (Exception e1) / TODO Auto-generated catch blocke1.printStackTrace();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号