请教现在比较少人用的又足够安全的加密算法

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:45:35
我想找一种类似MD5或SHA-1的算法来加密数据库中的某些字段,但是我不要MD5,因为我曾亲眼看到一串MD5加密过的东西轻易地就被破解了。。。

现在有没有哪种算法是实际中比较少用到的,又有一定安全性的,最好是不可逆的(这个不强求)。请附上算法详细的说明,如果有java的代码演示一下就更好了
嗯,那些破解确实只是从大量的数据中找匹配的,但是如果用户的密码本身设得不好,就很容易被人家查到了,所以我现在就想找一种不像MD5这么“树大招风”的算法。。。

用数据库做的md5映射,所以只要他的数据库里有就轻松的破解了,其实你这个问题我在以前就解决了 你可以在md5的结果里再自己做一下简单的变换,比如做一次反转之类的变化 实现起来也很简单,这样当人家不知道你在md5上加了反转 就直接去破解是破不出来的
我写了一段程序,希望对你有点帮助
import java.security.*;
import java.io.*;
import java.util.*;
import sun.misc.BASE64Encoder;
public class MD5
{
public static String creatPassword(String password)throws Exception
{

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(password.getBytes("UTF8"));
byte[] digest = md.digest();
/*在这里随便做点什么变换就可以了,可以自由发挥了,你也可以写一个反转什么的,我这里就简单点写了,注意为了保证md5的碰撞困难,最好不要改变原有的字符集,就是说最好只交换某些字符的位置,不要改变原有的值
还有你在验证的时候也要按照你发挥的方法写*/
byte tt=digest[0];digest[0]=digest[7];digest[7]=tt;

String outp;
outp = new BASE64Encoder().encode(digest);
/*顺便说一下采用BASE64Encoder编码后原本是16位的字符变成了24位,其中前22位是有效位,不是我们常见的16位了
这里也和我们用的数据库破解也不同,变换的过程其实是吧8位的byte只取6位,然后通过加字符长度来实现*/