/// <summary>
/// 字符加密函數 這是用的一個異或加密
/// </summary>
/// <param name="Str">待加密字符</param>
/// <returns>加密字符</returns>
function EncString(Str:String):String;
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) do
begin
Result:=Result+IntToHex(Byte(Str[i]) xor XorKey[j],2);
j:=(j+1) mod 8;
end;
end;
/// <summary>
/// 字符解密函數
/// </summary>
/// <param name="Str">加密字符</param>
/// <returns>解密字符</returns>
function DecString(Str:String):String;
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) div 2 do
begin
Result:=Result+Char(StrToInt('$'+Copy(Str,i*2-1,2)) xor XorKey[j]);
j:=(j+1) mod 8;
end;
end;麻烦哪位大侠将上面的dephi加密和解密代码转换为java代码,不胜感激
(byte) 243, (byte) 211, (byte) 231, (byte) 250 }; public String endcodeHtml(String html) {
try {
html = URLEncoder.encode(html, "UTF-8");//对中文字符进行处理
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
StringBuilder sb = new StringBuilder();
int j = 0;
for (char c : html.toCharArray()) {
String str = Integer.toHexString((byte) c ^ XorKey[j]);
sb.append(str.substring(6).toUpperCase());
j = (j + 1) % 8;
}
return sb.toString();
}
/**
* 对使用上边的endcodeHtml方法加密过得字符进行解密
*
* @param encodeHtml
* @return
*/
public String decodeHtml(String encodeHtml) {
StringBuilder sb = new StringBuilder();
int j = 0;
for (int i = 1; i < encodeHtml.length() / 2 + 1; i++) {
String f = encodeHtml.substring(i * 2 - 2, i * 2);
int n = Integer.parseInt(f, 16);
int m = (byte) n ^ XorKey[j];
sb.append((char) m);
j = (j + 1) % 8;
}
String result = new String(sb);
String finalResult = "";
try {
finalResult = URLDecoder.decode(result, "UTF-8");//转换中文字符
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return finalResult;
}