谁知道md5算法改如何使用,大家帮个忙了!
指点下了。

解决方案 »

  1.   

    要使用md5算法,你先记得导入一个jar包commons-codec-1.3.jar
    你到网上去下载,能下载到的。
    这个jar里面有个digestUtil的一个类。里面有个md5Hex()的一个方法,还有md5()方法,还有几个方法
    常用的是md5Hex() ,md5()这两个
    md5Hex()可以对一个string进行加密,得到一个string的字符串。这个字符串没有规律。很多的网银对接都是这样做的,用的大部分都是这两个方法。个人愚见!
      

  2.   

    private static void Md5(String plainText ) { 
    try { 
    MessageDigest md = MessageDigest.getInstance("MD5"); 
    md.update(plainText.getBytes()); 
    byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); 
    for (int offset = 0; offset < b.length; offset++) { 
    i = b[offset]; 
    if(i<0) i+= 256; 
    if(i<16) 
    buf.append("0"); 
    buf.append(Integer.toHexString(i)); 
    } System.out.println("result: " + buf.toString());//32位的加密 System.out.println("result: " + buf.toString().substring(8,24));//16位的加密 } catch (NoSuchAlgorithmException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 


      

  3.   

    2楼好厉害,你凭什么说我虚。好笑,真的是要笑死人!
    论坛上强调的是不能讽刺别人,今天不得已回报!你懂网银接口开发不?你懂原理不?自己写过不?哥来告诉你网银开发是怎么做到的
    其实不管网银,支付宝,财付通等接口开发,说白了也不算是什么很神奇的东西,说白了还不能算是真正的接口开发;
    他的原理可以这样去实现
    第三方公司早就先写好接口文档,文档已经定义了你要怎么去做
    他们其实是这样去想的。他给你一个页面让你去请求,把这个页面请求页面用filter拦截,他们会让你传一些必须的参数,如productID ,Id,price,span(签名)等,其中span的值为他们文档上写的那样,比如把你本地的参数拼接String str=productID+Id+price+密钥(他们给你的字符串);
    String span=DigestUtil.md5Hex(str);//这便是在你本地进行了一次算法(加密)你通过form的post请求,把productID ,Id,price,span一起传过去,于是在你一请求页面是就会被filter拦截,他们拦截获取你的参数,然后在他们自己的服务后台用md5的算法也进行一次算法(加密),看看得到的结果跟你的span的值同不同,如果相同则说明中间没有被别人做过手脚,说明是安全的数据,于是dofilter放行,于是让你把数据请求到他们的服务器上了。这便是接口对接
      

  4.   

    等于是你在本地把所有的参数拼接,

    String str=a+b+c+密钥(他们给你的字符串);//这个的拼接有很多种,看他们文档怎么写,如果你是接口开发人员,那你想怎么定义就怎么定于,比如a参数与b参数之间加个,也可以;然后用md5算一次得到一个span(签名),String span=DigestUtil.md5Hex(str);同时当你请求到filter的时候他们也这样做String a=request...
    String b=request...
    String c=request...String str=a+b+c+密钥(他们根据你的id从他们数据库中查询你的密钥);
    String span2=DigestUtil.md5Hex(str);判断你的span跟他算的span2相等不,如果等则让你过去,dofilter
    否则让你请求到一个错误的页面。之所以这样做就是为了判断你的参数在中间有人做了手脚没有,或者看看是不是有些人故意去提交的。为了防止这些,于是别人用MD5,DES等算法,因为算法原理都一样,只要你放进去的东西一样,得到的结果也一样。
      

  5.   

    // MD5加码。32位
    public static String MD5(String inStr) {
    MessageDigest md5 = null;
    try {
    md5 = MessageDigest.getInstance("MD5");
    } catch (Exception e) {
    System.out.println(e.toString());
    e.printStackTrace();
    return "";
    }
    char[] charArray = inStr.toCharArray();
    byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++)
    byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) {
    int val = ((int) md5Bytes[i]) & 0xff;
    if (val < 16)
    hexValue.append("0");
    hexValue.append(Integer.toHexString(val));
    } return hexValue.toString();
    }   调这个方法!试试!
      

  6.   

    最近一直在研究webservice加密的问题,也可以加以借鉴,谢谢了