font
论坛元老
 
初级会员
UID 43400
精华
0
积分 36361
帖子 260
金钱 36361 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2004-11-1
状态 离线
|
实现PHP与JSP之间加密通讯
其实在PHP与JSP之间,可能有些朋友在没有PASSPORT的情况下,可能会碰到需要判断登陆问题,当然解决的办法有很多,按照不同的需求,我这里主要是设计了一个简单的.使用JAVABEAN去封装.需要的朋友可以随意使用.
双方都有一个公钥,都可以实现加密解密.
<?php $data = "我操"; echo substr($data,1,1); exit; $key = "wotmd";
function keytao($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr++; } return $tmp; }
function EncodeTao($txt,$key) { $encrypt_key = md5($key);
for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$ctr++; }
return keytao($tmp,$key);
}
function DecodeTao($txt,$key) {
$txt = keytao($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++) { $md5 = substr($txt,$i,1); $i++; $tmp.= (substr($txt,$i,1) ^ $md5); } return $tmp; }
echo $tt = base64_encode(EncodeTao($data,$key)); echo "<Br>"; echo DecodeTao(base64_decode($tt),$key); ?> javabean代码
<?php package com.woyao.security;
import com.woyao.global.*; import java.io.*;
public class taotao { public void taotao() { //init~ } public String keyTao(String txt1,String encrypt_key,boolean re) { MD5 m = new MD5(); encrypt_key = m.getMD5ofStr(encrypt_key); String txt=""; try{ txt = new String(txt1.getBytes("ISO_8859_1")); } catch(UnsupportedEncodingException e) { System.out.println(e.getMessage()); } if (re==true) { txt = txt.replaceAll("f",""); txt = txt.replaceAll("r",""); txt = txt.replaceAll("n",""); txt = txt.replaceAll("t",""); }
int ctr = 0; String tmp = ""; String t_1 = ""; char t1[]; int t11 = 0; String t_2 = ""; char t2[]; int t22 = 0; for (int i = 0 ; i < txt.length();i++) { if (ctr == encrypt_key.length()) ctr = 0; t_1 = txt.substring(i,i+1); t1 = t_1.toCharArray(); t11 = (int)t1[0]; t_2 = encrypt_key.substring(ctr,ctr+1); t2 = t_2.toCharArray(); t22 = (int)t2[0];
int char_temp = t11 ^ t22; char char_t = (char)char_temp;
String char_temp2 = String.valueOf(char_t); if (t_1.compareTo("")==1) { tmp = tmp + char_temp2; } ctr++; }
return tmp; }
public String EncodeTao(String txt,String key) { //加密~ MD5 m = new MD5(); String skey = m.getMD5ofStr(key); String tmp = ""; String t_1 = ""; int t11 = 0; char t1[]; String t_2 = ""; int t22 = 0; char t2[]; int crt = 0; int i = 0;
for (i=0;i<txt.length();i++) { if (crt == skey.length()) crt = 0; t_1 = txt.substring(i,i+1); t1 = t_1.toCharArray(); t11 = (int)t1[0]; t_2 = skey.substring(crt,crt+1); t2 = t_2.toCharArray(); t22 = (int)t2[0]; int char_temp = t11 ^ t22; char char_t = (char)char_temp;
String char_temp2 = String.valueOf(char_t);
tmp = tmp + (t_2 + char_temp2);
//System.out.println(tmp); crt++; } base64 b = new base64(); tmp = b.getBASE64(tmp); return keyTao(tmp,key,true); } public String DecodeTao(String txt,String key) { txt = keyTao(txt,key,false); txt = txt.replaceAll("f",""); txt = txt.replaceAll("r",""); txt = txt.replaceAll("n",""); txt = txt.replaceAll("t",""); base64 b = new base64(); txt = b.getFromBASE64(txt); String tmp = ""; String t_1 = ""; char t1[]; int t11 = 0; char t2[]; int t22 = 0; String md5 = ""; for (int i = 0;i < txt.length();i++) { md5 =txt.substring(i,i+1); i++; t_1 = txt.substring(i,i+1); t1 = t_1.toCharArray(); t11 = (int)t1[0]; t2 = md5.toCharArray(); t22 = (int)t2[0]; int char_temp = t11 ^ t22; char char_t = (char)char_temp;
String char_temp2 = String.valueOf(char_t); tmp = tmp + char_temp2; } return tmp; }
public static void main (String args[]) { taotao tt = new taotao(); String da = "test|||123456|||1158295786"; String key = "9okmnji8654";
base64 b = new base64(); da = b.getBASE64(da); //System.out.println(da); String ee = b.getBASE64(tt.EncodeTao(da,key)); System.out.println(ee); ee = ee.replaceAll("f",""); ee = ee.replaceAll("r",""); ee = ee.replaceAll("n",""); ee = ee.replaceAll("t","");
try{ String FileName = "c:\text.txt"; File myFile=new File(FileName); myFile.createNewFile(); FileWriter fw = new FileWriter(FileName); fw.write(ee); fw.close(); } catch(Exception e) { }
String deString = b.getFromBASE64(ee);
System.out.println(b.getFromBASE64(tt.DecodeTao(deString,key)));
} } ?> [ 本帖最后由 font 于 2006-10-10 09:55 AM 编辑 ]
|  我木有积分我木有 金钱我木有喜悦币我木有威望我木有人脉我木有头衔 |
|