我要用java的加密方式和php的加密匹配,求大神

我知道php此方式加密前密码是123456,加密后是MTEwMTA4MTEwMTA4MTEwMTA4,现在我要用java的方式进行加密,然后和php的进行匹配... 我知道php此方式加密前密码是123456,加密后是MTEwMTA4MTEwMTA4MTEwMTA4 ,

现在我要用java的方式进行加密,然后和php的进行匹配
展开
 我来答
megiwangjj
2013-12-08 · 超过15用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:42.7万
展开全部

根据题目的意思呢:先帮你把php的部分给弄出来吧,代码如下:

<?php 
function xx($p){
    $txt = "";
$x = $y;
$end = (int)substr($p,strlen($p)-1);
$z = $end;
for($i=0;$i<strlen($p);$i++){
$xx = ord($p[$i]);
$k = $xx ^ $z;
$x = $xx;
$y = $k;
$txt.=$x+$y+$z;
}
return base64_encode($txt);
}
$p = "123456";
echo xx($p);
?>

代码运行的结果就是:

MTEwMTA4MTEwMTA4MTEwMTA4

其中txt的结果是:108110108110108110108



java的代码如下:


package com.megi_info.test.zhidao;

import org.apache.commons.codec.binary.Base64;


public class Base64Encode {

/**
 * @param args
 */
public static void main(String[] args) throws Exception{
String phpEncoded = "MTEwMTA4MTEwMTA4MTEwMTA4";
String pwd = "123456";

String javaEncoded = getBase64Code(pwd);

if(javaEncoded.equals(phpEncoded)){
System.out.println("Match succeed!");
}else{
System.out.println("Match failed!");
}

}

public static String getBase64Code(String pwd)throws Exception{
int end = Integer.parseInt(pwd.substring(pwd.length()-1, pwd.length()));
byte z = (byte)end;
StringBuffer txt = new StringBuffer();
for(int i = 0;i<pwd.length();i++){
byte xx = (byte)pwd.toCharArray()[i];
byte k = (byte) (xx ^ z);
byte x = xx;
byte y = k;
txt.append(String.valueOf((byte) (x + y + z)));
}
return new String(Base64.encodeBase64(String.valueOf(txt).getBytes()));
}

}

注意:需要导入的java包是org.apache.commons.codec.binary.Base64.如果没有的话,自己去下一个。


差不多都出来了o(∩_∩)o。。。

更多追问追答
追问
你好,那如果php那边加密的不是123456呢??你看你java这边都定死了是解密那个,灵活一点呢?
追答
一样的啊。你要看我的加密方法啊。主要是你的php用的什么密码,java的加密方法里就可以传什么密码啊。getBase64Code(String pwd),这个方法里就是传入的密码。主方法里是为了演示而写死的。你完全可以用参数传进去啊。没有任何问题啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式