1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MessageDigest实现单向加密(MD5 SHA1 SHA-256 SHA-512)

MessageDigest实现单向加密(MD5 SHA1 SHA-256 SHA-512)

时间:2023-05-17 04:02:38

相关推荐

MessageDigest实现单向加密(MD5 SHA1 SHA-256 SHA-512)

单向加密与双向加密

双向加密是加密算法中最常用的,它将可以直接理解的明文数据加密为不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文。双向加密适合于隐秘通信,例如,用户在网上购物时,需要向网站提交信用卡密码,用户当然不希望自己的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,用户希望自己的信用卡密码是通过加密以后,再在网络传送,因此网站接收到用户的数据以后,通过解密算法就可以得到准确的信用卡账号。单向加密只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。单向加密一般用于数据库中用户信息的加密(例如用户密码加密)。

MessageDigest(信息摘要)

Java中提供了MessageDigest类,用于实现单向加密较为简便。

//信息摘要实现单向加密方法//参数:str是加密前的字符串,type是加密类型(MD5、SHA1、SHA-256、SHA-512)//返回值:加密后字符串public static String encrypt(String str, String type) throws NoSuchAlgorithmException {/** MD5、SHA1、SHA-256、SHA-512* */MessageDigest md = MessageDigest.getInstance(type);/** update方法负责加密* 字符串转字节数组:str.getBytes("编码格式")* */md.update(str.getBytes());/**获取摘要结果,加密后的数组* */byte[] bs = md.digest();/** 变为16进制,使用字符串进行拼接* */StringBuilder res = new StringBuilder();for (byte b : bs) {res.append(String.format("%02X", b));}return res.toString();}

测试

public static void main(String[] args) throws NoSuchAlgorithmException {String str = "helloworld";System.out.println("MD5加密结果:"+encrypt(str,"MD5"));System.out.println("SHA1加密结果:"+encrypt(str,"SHA1"));System.out.println("SHA-256加密结果:"+encrypt(str,"SHA-256"));System.out.println("SHA-512加密结果:"+encrypt(str,"SHA-512"));}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。