Java 实现字符串SHA1加密方法
程序员文章站
2022-03-10 13:20:30
目录java 字符串sha1加密导入类定义函数javasha1实现加密解密封装一个方法用于加密主函数测试java 字符串sha1加密导入类import java.security.messagedig...
java 字符串sha1加密
导入类
import java.security.messagedigest;
定义函数
private string touserpwd(final string password) { try { if (password == null) { return null; } final messagedigest messagedigest = messagedigest.getinstance("sha"); final byte[] digests = messagedigest.digest(password.getbytes()); final stringbuilder stringbuilder = new stringbuilder(); for (int i = 0; i < digests.length; i++) { int halfbyte = (digests[i] >>> 4) & 0x0f; for (int j = 0; j <= 1; j++) { stringbuilder.append( ((0 <= halfbyte) && (halfbyte <= 9)) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10))); halfbyte = digests[i] & 0x0f; } } return stringbuilder.tostring(); } catch (final throwable throwable) { this.log.error("error converting password", throwable); return null; } }
javasha1实现加密解密
封装一个方法用于加密
/** * sha1加密 * @param data * @return * @throws nosuchalgorithmexception */ public static string sha1(string data) throws nosuchalgorithmexception { //加盐 更安全一些 data += "lyz"; //信息摘要器 算法名称 messagedigest md = messagedigest.getinstance("sha1"); //把字符串转为字节数组 byte[] b = data.getbytes(); //使用指定的字节来更新我们的摘要 md.update(b); //获取密文 (完成摘要计算) byte[] b2 = md.digest(); //获取计算的长度 int len = b2.length; //16进制字符串 string str = "0123456789abcdef"; //把字符串转为字符串数组 char[] ch = str.tochararray(); //创建一个40位长度的字节数组 char[] chs = new char[len*2]; //循环20次 for(int i=0,k=0;i<len;i++) { byte b3 = b2[i];//获取摘要计算后的字节数组中的每个字节 // >>>:无符号右移 // &:按位与 //0xf:0-15的数字 chs[k++] = ch[b3 >>> 4 & 0xf]; chs[k++] = ch[b3 & 0xf]; } //字符数组转为字符串 return new string(chs); }
主函数测试
public static void main(string[] args) throws nosuchalgorithmexception { string data = "跳梁小豆tlxd666"; string result = sha1(data); system.out.println("加密后:"+result); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
下一篇: 那你吐的是什么