首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

java转php加密和好密

2013-09-11 
java转php加密和解密将UserJsonUtil类中的encryptJsonUser()加密,写成php的加密decryptJsonUser()解密,写

java转php加密和解密
将UserJsonUtil类中的
encryptJsonUser()加密,写成php的加密;
decryptJsonUser()解密,写成php的解密。



package com.test.moltest;

import java.util.Collection;
import java.util.Iterator;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.capinfo.crypt.Md5;

/**
 * Created by IntelliJ IDEA.
 * User: bob_0703
 * Date: 2008-10-18
 * Time: 17:30:53
 * To change this template use File | Settings | File Templates.
 */
public class UserJsonUtil {

    private static final Log log = LogFactory.getLog("UserJsonUtil.class");

    public static boolean decryptJsonUser(String s) {
        boolean rs = false;
        try {
            s = DESTools.decrypt("testtest", s);//解密1

            JSONObject jobj = JSONObject.fromObject(s);//转换成为json
            JSONArray names=jobj.names();
            String md5Str = (String) jobj.get("md5");//获取加密后的MD5

            names.remove(names.size()-1);
            StringBuffer buf=new StringBuffer();
            Iterator<String> it=names.iterator();
            while(it.hasNext()){
                String name=it.next();
                buf.append(jobj.get(name));
            }

            jobj.remove("md5");
            Md5 md5 = new Md5("");
            md5.hmac_Md5(buf.toString(), "test");
            byte b[] = md5.getDigest();


            String digestString = md5.stringify(b);//获取加密后的MD5
            
            if (md5Str.equals(digestString)) {//比较
                rs = true;
            }
        } catch (Exception ie) {
            ie.printStackTrace();
            log.error(ie);
        }
        return rs;
    }
    public static String encryptJsonUser(JSONObject jobj) {
        try {
            Collection values=jobj.values();
            StringBuffer buf=new StringBuffer();
            Iterator it=values.iterator();
            while(it.hasNext()){
                String value=it.next().toString();
                buf.append(value);
            }
            Md5 md5 = new Md5("");
            md5.hmac_Md5(buf.toString(), "test");
            byte b[] = md5.getDigest();
            String digestString = md5.stringify(b);//加密MD5
            jobj.put("md5", digestString);
            digestString = DESTools.encrypt("testtest", jobj.toString());//加密
            return digestString;
        } catch (Exception ie) {
            ie.printStackTrace();
            log.error(ie);


            return "";
        }
    }
}



package com.test.moltest;

import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Random;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * Created by IntelliJ IDEA.
 * User: wtj
 * Date: 2008-9-11
 * Time: 11:30:08
 * To change this template use File | Settings | File Templates.
 * 国政通加密工具
 */

public class DESTools {
    private static Random ran = new Random();
    //private static Logger logger;
    private static final String ALGORITHM = "DES/CBC/PKCS5Padding";
    private static byte SECRETKEY[];
    private static BASE64Decoder base64de = new BASE64Decoder();
    private static BASE64Encoder base64en = new BASE64Encoder();
    private static Cipher encryptCipher;
    private static Cipher decryptCipher;


    public static int getActualMaximum(String date) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMM");
        Calendar cal = Calendar.getInstance();
        cal.setTime(formatter.parse("200604"));

        return cal.getActualMaximum(Calendar.DATE);
    }

    public static String encrypt(String key, String src) {
        SECRETKEY = key.getBytes();

        String ret = "";
        try {
            DESKeySpec dks = new DESKeySpec(SECRETKEY);


            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            javax.crypto.SecretKey securekey = keyFactory.generateSecret(dks);
            IvParameterSpec spec = new IvParameterSpec(SECRETKEY);
            Cipher encrypt_Cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            encrypt_Cipher.init(1, securekey, spec);

            byte dest[] = encrypt_Cipher.doFinal(src.getBytes());
            ret = base64en.encode(dest);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
    }

    public static String decrypt(String key, String src) throws UnsupportedEncodingException {
        SECRETKEY = key.getBytes();
        String ret = "";
        try {

            DESKeySpec dks = new DESKeySpec(SECRETKEY);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            javax.crypto.SecretKey securekey = keyFactory.generateSecret(dks);
            IvParameterSpec spec = new IvParameterSpec(SECRETKEY);
            Cipher decrypt_Cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            decrypt_Cipher.init(2, securekey, spec);

            byte buf[] = base64de.decodeBuffer(src);
            byte dest[] = decrypt_Cipher.doFinal(buf);
            ret = new String(dest);


        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
    }
    public static String decrypt1(String key, String src) throws UnsupportedEncodingException {
        SECRETKEY = key.getBytes("GB2312");
        String ret = "";
        try {

            DESKeySpec dks = new DESKeySpec(SECRETKEY);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            javax.crypto.SecretKey securekey = keyFactory.generateSecret(dks);
            IvParameterSpec spec = new IvParameterSpec(SECRETKEY);
            Cipher decrypt_Cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            decrypt_Cipher.init(2, securekey, spec);

            byte buf[] = base64de.decodeBuffer(src);
            byte dest[] = decrypt_Cipher.doFinal(buf);
            ret = new String(dest);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
    }
    //遨游加密程序。
    public static String Maxencrypt(String key1, String key2, String src) {
        //   SECRETKEY = key1.getBytes();

        String ret = "";
        try {
            DESKeySpec dks = new DESKeySpec(key1.getBytes());
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");


            javax.crypto.SecretKey securekey = keyFactory.generateSecret(dks);
            IvParameterSpec spec = new IvParameterSpec(key2.getBytes());
            Cipher encrypt_Cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            encrypt_Cipher.init(1, securekey, spec);

            byte dest[] = encrypt_Cipher.doFinal(src.getBytes());
            ret = base64en.encode(dest);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
    }

    public static String Maxdecrypt(String key1, String key2, String src) {
        //SECRETKEY = key1.getBytes();
        String ret = "";
        try {

            DESKeySpec dks = new DESKeySpec(key1.getBytes());
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            javax.crypto.SecretKey securekey = keyFactory.generateSecret(dks);
            IvParameterSpec spec = new IvParameterSpec(key2.getBytes());
            Cipher decrypt_Cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            decrypt_Cipher.init(2, securekey, spec);

            byte buf[] = base64de.decodeBuffer(src);
            byte dest[] = decrypt_Cipher.doFinal(buf);
            ret = new String(dest);
        } catch (Exception e) {
            e.printStackTrace();


        }
        return ret;
    }
}


[解决办法]
伸手黨式的提問,恐怕沒人願意回答

热点排行