gwl3323405 发表于 2012-8-10 00:11:31

Java的MD5加密方法

很使用的一个方法,相信开发java web的童鞋经常用吧。
public final static String MD5(String s) {
                char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                                'A', 'B', 'C', 'D', 'E', 'F' };
                try {
                        byte[] btInput = s.getBytes();
                        // 获得MD5摘要算法的 MessageDigest 对象
                        MessageDigest mdInst = MessageDigest.getInstance("MD5");
                        // 使用指定的字节更新摘要
                        mdInst.update(btInput);
                        // 获得密文
                        byte[] md = mdInst.digest();
                        // 把密文转换成十六进制的字符串形式
                        int j = md.length;
                        char str[] = new char;
                        int k = 0;
                        for (int i = 0; i < j; i++) {
                                byte byte0 = md;
                                str = hexDigits;
                                str = hexDigits;
                        }
                        return new String(str);
                } catch (Exception e) {
                        e.printStackTrace();
                        return null;
                }
        }

gregwym 发表于 2012-8-10 00:37:29

code放一边不说...MD5不能加密吧? 已经可以字典破解了

蓝宇轩 发表于 2012-8-10 10:17:25

gregwym 发表于 2012-8-10 00:37 static/image/common/back.gif
code放一边不说...MD5不能加密吧? 已经可以字典破解了

MD5的算法都是公开的;只是一些常用的简单的;如abc之内的已经是成为字典了;但是如果经过二次添加的话;破解的话;基本上很难~~

gwl3323405 发表于 2012-8-10 10:19:21

真的假的?我出个你破下:E807F1FCF82D132F9BB018CA6738A19F

gwl3323405 发表于 2012-8-10 10:24:48

败了,果然可以破解,但这个貌似不能:C08DB54CD0D3E7072014E1D0E344F359,估计能破解简单的吧!

neco 发表于 2012-8-10 15:35:54

= =表示 怎么可以用MD5加密?
即便用MD5也要进行加盐处理
不然 6位一下的数字和字母混合一定被破解6位的都是免费的 8位以上也好不到哪里去

风音洛洛 发表于 2012-8-12 07:26:16

gregwym 发表于 2012-8-10 00:37 static/image/common/back.gif
code放一边不说...MD5不能加密吧? 已经可以字典破解了

那种穷举的方式对任何存在公开的源码的加密算法都是可行的,即使是像MD5这样的不可逆的算法。话说回来加密方式无论多高科技,安全也只是相对的。在更高效安全的算法诞生之前,凑合着用吧

风音洛洛 发表于 2012-8-12 07:27:49

gwl3323405 发表于 2012-8-10 10:24 static/image/common/back.gif
败了,果然可以破解,但这个貌似不能:C08DB54CD0D3E7072014E1D0E344F359,估计能破解简单的吧! ...

喂喂。。。能破解倒是能破解,但是去哪里找彩虹表跑啊

风音洛洛 发表于 2012-8-12 07:28:53

neco 发表于 2012-8-10 15:35 static/image/common/back.gif
= =表示 怎么可以用MD5加密?
即便用MD5也要进行加盐处理
不然 6位一下的数字和字母混合一定被破解6位的 ...

所以说现在网站密码至少需要6位

轻舟过 发表于 2012-8-12 08:40:30

类似的杂凑算法挺多的,比如sha1什么的

gwl3323405 发表于 2012-8-12 21:44:47

看度娘上说有个王女士破解了MD5,SHA-1等5种密码!?真的假的?

gregwym 发表于 2012-8-13 00:56:20

本帖最后由 gregwym 于 2012-8-13 01:04 编辑

MD5本身就不是用来加密密码的...`

参看:
dustwell.com/how-to-handle-passwords-bcrypt.html
Bcrypt介绍:
codahale.com/how-to-safely-store-a-password/

0 0`不让我发链接...

gregwym 发表于 2012-8-13 01:10:02

风音洛洛 发表于 2012-8-12 07:26 static/image/common/back.gif
那种穷举的方式对任何存在公开的源码的加密算法都是可行的,即使是像MD5这样的不可逆的算法。话说回来加 ...

我说的不是穷举...`

另, 算法设计时如果不假设源码公开, 这本身就不是个好设计.
安全是相对的我同意, 等quantum computer出现, 现有的所有加密算法都将不可靠. 但现在明显有更合适更专注于密码加密的算法, 当然不要用MD5.

风音洛洛 发表于 2012-8-13 08:04:20

gregwym 发表于 2012-8-13 01:10 static/image/common/back.gif
我说的不是穷举...`

另, 算法设计时如果不假设源码公开, 这本身就不是个好设计.


quantum,,,好久不见的单词。。。我记得第一次接触的时候还是在初中。。。
话说我记得硅谷不是有量子计算机了么,而且听说耗电量巨大。。

gregwym 发表于 2012-8-13 22:23:14

风音洛洛 发表于 2012-8-13 08:04 static/image/common/back.gif
quantum,,,好久不见的单词。。。我记得第一次接触的时候还是在初中。。。
话说我记得硅谷不是有量子计 ...

我印象里, 好像还没有能正常使用的quantum computer
页: [1] 2
查看完整版本: Java的MD5加密方法