返回信息流注释里是一段反编译的vb代码,看不太懂,想翻译成java没成功,求高手修改
import java.util.Random;
public class Cipher {
public static void main(String[] args){
DeCipher(Cipher("~DM)DGdt!1Val3#^w"));
//System.out.print(Cipher("~DM)DGdt!1Val3#^w"));
}
//Public Function Cipher(from_text) '11023A80
// 'Data Table: 11006714
// Dim var_BC As Integer
// Dim var_9C As Single
// Dim var_96 As Integer
// loc_1102396F: var_8C = from_text
// loc_1102397A: Call Proc_0_49_110202A4("YZJCYSCWWW")
// loc_1102398F: var_9C = Rnd(-1)
// loc_1102399D: Randomize(var_9C)
// loc_110239B2: For var_C0 = 1 To CInt(Len(var_8C)): var_94 = var_C0 'Integer
// loc_110239B8: var_BC = 1
// loc_110239E7: If ((Asc(Mid$(var_8C, CLng(var_94), var_BC)) >= &H20) And (Asc(Mid$(var_8C, CLng(var_94), var_BC)) <= &H7E)) Then
// loc_110239F0: var_96 = (var_96 - &H20)
// loc_11023A1D: var_96 = CInt(((CLng(var_96) + CLng(Int((CDbl(&H60) * Rnd(var_BC))))) Mod &H5F))
// loc_11023A26: var_96 = (var_96 + &H20)
// loc_11023A39: var_88 = var_88 & Chr$(CLng(var_96))
// loc_11023A42: Else
// loc_11023A5B: MsgBox "输入的符号包含中文,但只能用英文字符,请重新输入!", 0, var_E4, var_104, var_124
// loc_11023A6B: Cipher = var_96
// loc_11023A71: End If
// loc_11023A74: Next var_C0 'Integer
// loc_11023A79: Cipher = %x1
//End Function
//测试用力
//~DM)DGdt!1Val3#^w
//~DM)DGdt!1Vab3}^m
public static String Cipher(String from_text){
int var_BC;
float var_9C;
int var_96 = 0;
String sOut = "";
int Cipher;
String var_8C = from_text;
//ProcA("YZJCYSCWWW");
var_9C = (float) Math.random();
for(int i=0; i<var_8C.length() ;i++){
int var_94 = i;
var_BC = 1;
if(var_8C.getBytes()[i] >= 0x20 && var_8C.getBytes()[i] <=0x7e ){
var_96 = (var_96 - 0x20);
var_96 = (int)( (var_96 + (0x60) * Math.random()) % 0x5F); //??
var_96 = (var_96 + 0x20);
sOut += (char)var_96;
//System.out.print((char)var_96);
}
else{
System.out.println("输入的符号包含中文,但只能用英文字符,请重新输入");
//return var_96;
}
//return %x1; //??
}
return(sOut);
}
//Public Sub Proc_0_49_110202A4(arg_C) '110202A4
//'Data Table: 11006714
//Dim var_94 As Long
//Dim var_90 As Long
//Dim var_98 As Long
//Dim var_9C As Long
//loc_110201FF: var_8C = arg_C
//loc_11020212: For var_A4 = 1 To CInt(Len(var_8C)): var_9E = var_A4 'Integer
//loc_11020232: var_94 = CLng(Asc(Mid$(var_8C, CLng(var_9E), 1)))
//loc_1102024F: var_90 = var_90 Xor CLng((CDbl(var_94) * (CDbl(2) ^ CDbl(var_98))))
//loc_11020266: var_90 = var_90 Xor CLng((CDbl(var_94) * (CDbl(2) ^ CDbl(var_9C))))
//loc_11020278: var_98 = ((var_98 + 7) Mod &H13)
//loc_1102028A: var_9C = ((var_9C + &HD) Mod &H17)
//loc_11020290: Next var_A4 'Integer
//loc_1102029B: Proc_0_49_110202A4 = var_90
//End Sub
public static Long ProcA(String arg_C){
long var_94 = (long)0,
var_90 = (long)0,
var_98 = (long)0,
var_9C = (long)0;
String var_8C = arg_C;
for (int i=1;i<= var_8C.length(); i++){
int var_9E = i;
var_94 = (long)var_8C.getBytes()[var_9E];
var_90 = var_90 ^ (long)(var_94 * Math.pow(2, var_98) ) ;
var_90 = var_90 ^ (long)(var_94 * Math.pow(2, var_9C) ) ;
var_98 = ((var_98 + 7) % 0x13);
var_9C = ((var_9C + 0xD) % 0x17);
}
return var_90;
}
//Public Function Decipher(from_text) '11022C80
// 'Data Table: 11006714
// Dim var_BC As Integer
// Dim var_9C As Single
// Dim var_96 As Integer
// loc_11022B8F: var_8C = from_text
// loc_11022B9A: Call Proc_0_49_110202A4("YZJCYSCWWW")
// loc_11022BAF: var_9C = Rnd(-1)
// loc_11022BBD: Randomize(var_9C)
// loc_11022BD2: For var_C0 = 1 To CInt(Len(var_8C)): var_94 = var_C0 'Integer
// loc_11022BD8: var_BC = 1
// loc_11022C07: If ((Asc(Mid$(var_8C, CLng(var_94), var_BC)) >= &H20) And (Asc(Mid$(var_8C, CLng(var_94), var_BC)) <= &H7E)) Then
// loc_11022C10: var_96 = (var_96 - &H20)
// loc_11022C46: If (CInt(((CLng(var_96) - CLng(Int((CDbl(&H60) * Rnd(var_BC))))) Mod &H5F)) < 0) Then
// loc_11022C4F: var_96 = (var_96 + &H5F)
// loc_11022C52: End If
// loc_11022C6B: var_88 = var_88 & Chr$(CLng(((var_96 + &H20) + &H20)))
// loc_11022C71: End If
// loc_11022C74: Next var_C0 'Integer
// loc_11022C79: Decipher = %x1
//End Function
public static void DeCipher(String input){
int var_BC;
float var_9C;
int var_96 = 0;
String var_8C = input;
var_9C = (float) Math.random();
for(int i=0; i<var_8C.length() ;i++){
int var_94 = i;
var_BC = 1;
if (true){
var_96 = (var_96 - 0x20);
if( var_96 < 0x60*Math.random() % 0x5F){
var_96 = (var_96 + 0x5F);
}
System.out.print((char)var_96);
}
}
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #24476同步于 2013/3/13
Java机器人发帖
【求助】懂vb的进,翻译成java
geniuszty
2013/3/13镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。