封装一个方法用于加密
1 /** 2 * sha1加密 3 * @param data 4 * @return 5 * @throws NoSuchAlgorithmException 6 */ 7 public static String sha1(String data) throws NoSuchAlgorithmException { 8 //加盐 更安全一些 9 data += "lyz"; 10 //信息摘要器 算法名称 11 MessageDigest md = MessageDigest.getInstance("SHA1"); 12 //把字符串转为字节数组 13 byte[] b = data.getBytes(); 14 //使用指定的字节来更新我们的摘要 15 md.update(b); 16 //获取密文 (完成摘要计算) 17 byte[] b2 = md.digest(); 18 //获取计算的长度 19 int len = b2.length; 20 //16进制字符串 21 String str = "0123456789abcdef"; 22 //把字符串转为字符串数组 23 char[] ch = str.toCharArray(); 24 25 //创建一个40位长度的字节数组 26 char[] chs = new char[len*2]; 27 //循环20次 28 for(int i=0,k=0;i<len;i++) { 29 byte b3 = b2[i];//获取摘要计算后的字节数组中的每个字节 30 // >>>:无符号右移 31 // &:按位与 32 //0xf:0-15的数字 33 chs[k++] = ch[b3 >>> 4 & 0xf]; 34 chs[k++] = ch[b3 & 0xf]; 35 } 36 37 //字符数组转为字符串 38 return new String(chs); 39 }
主函数测试
1public static void main(String[] args) throws NoSuchAlgorithmException { 2 3 String data = "跳梁小豆tlxd666"; 4 String result = sha1(data); 5 System.out.println("加密后:"+result); 6 7 }