我要用java的加密方式和php的加密匹配,求大神
我知道php此方式加密前密码是123456,加密后是MTEwMTA4MTEwMTA4MTEwMTA4,现在我要用java的方式进行加密,然后和php的进行匹配...
我知道php此方式加密前密码是123456,加密后是MTEwMTA4MTEwMTA4MTEwMTA4 ,
现在我要用java的方式进行加密,然后和php的进行匹配 展开
现在我要用java的方式进行加密,然后和php的进行匹配 展开
1个回答
展开全部
根据题目的意思呢:先帮你把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),这个方法里就是传入的密码。主方法里是为了演示而写死的。你完全可以用参数传进去啊。没有任何问题啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询