吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3696|回复: 6
收起左侧

[Java 转载] Java MD5加密

  [复制链接]
孤云 发表于 2018-5-20 00:13
本帖最后由 苏紫方璇 于 2018-5-20 09:12 编辑

[Java] 纯文本查看 复制代码
public class MD5Utils {
        public static String md5(String str) {
                try {
                        MessageDigest md =MessageDigest.getInstance("MD5");//返回实现制定摘要算法的MessageDigest,有异常需要捕获下异常
                        byte[] bytes = md.digest(str.getBytes());//定义一个变量,把str转换成byte类型,在调用Java提供的方法进行加密,并赋值给bytes
                        String s = "" ;                                                        //定义一个空字符串接收加密后的字符串
                        for(byte b:bytes) {                                                //遍历数组
                                s += Integer.toHexString(b >>> 4 & 0xF);//这里右移的原因是byte有效位8位所以要将16进制拆分成2个值;
                                //把数组里的每个值都无符号右移4,然后& 0xF(这是16进制),最后把结果装换成16进制并赋值给s
                                s += Integer.toHexString(b & 0xF);//byte有效位8位所以要将16进制拆分成2个值;
                        }
                        return s;//把加密的字符串返回
                } catch (NoSuchAlgorithmException e) {
                }
                return null;
        }s += Integer.toHexString(b >>> 4 & 0xF);
补充下这2个怎么运算的,举个例子,1111 1111 1111 1111 1111 1111  1101 0111 无符号右移4位,把最右边的4位去掉
0000 1111 1111 1111 1111 1111 1111  1101  这是右移之后的结果,然后在将他进行&运算0XF(与运算是要用二进制进行的所以要把0XF转换成2进制也就是1111)0000 0000 0000 0000 0000 0000 0000 1111  这是2进制的F0000 0000 0000 0000 0000 0000 0000 1101 这是&运算后的结果,应为跟&运算都为1才是1,所以这就拿到了第一个值接下来拿第二个值s += Integer.toHexString(b& 0xF);
1111 1111 1111 1111 1111 1111 1101 0111 直接与11110000 0000 0000 0000 0000 0000 0000 11110000 0000 0000 0000 0000 0000 0000 0111 这就拿到第二个值了  有什么错误请指出,我也是新手,也不是很懂,有什么遗漏也请在下方留言告诉我。转载请注明作者。

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
War-Horse + 1 + 1 用心讨论,共获提升!
万物皆空 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 孤云 发表于 2018-5-20 00:14
排版乱了 我也很无奈
hack_wangyu 发表于 2018-5-20 00:25
小小耳机 发表于 2018-5-20 01:13
qqLinux 发表于 2018-5-20 08:03
楼主没学过大小端知识吧?一般很少用位移,而是使用位运算重组数据,不然这样很麻烦,毕竟有些计算机大小端不同(这是硬件上的区别)
 楼主| 孤云 发表于 2018-5-20 09:03 来自手机
qqLinux 发表于 2018-5-20 08:03
楼主没学过大小端知识吧?一般很少用位移,而是使用位运算重组数据,不然这样很麻烦,毕竟有些计算机大小端 ...

MD5都是前2天学的
 楼主| 孤云 发表于 2018-5-20 09:48
小小耳机 发表于 2018-5-20 01:13
群主看下  这样排版乱不乱

刚玩吾爱不久,没发现有那个,谢谢提醒
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 15:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表