关于JAVA中ASCII与汉字的转换。

caok 2010-02-19 04:20:06

最近在做一项目,由于原项目是powerbuilder 9.0开发,其中的用户密码的加密与解密,解密是没有问题(原来PB程序所加的密),但是用JAVA去加密与PB加密的实现效果一样,搞了很长时间也搞不定,各位大侠帮我看看。

解密程序:
public static String DeCode(String code) {

String binary = "", ret = "", bit = "";
int bin, len;

byte[] byt = code.getBytes();

for (int k = 0; k < byt.length; k++) {



bit = "";

bin = byt[k] & 0xFF;

if (bin > 128) {
k++;
}


binary = Integer.toBinaryString(bin);

len = 8 - binary.length();

for (int i = 0; i < len; i++) {
binary = "0" + binary;
}

for (int n = 0; n < binary.length(); n++) {

if (binary.substring(n, n + 1).equals("0")) {
bit = bit + "1";
} else {
bit = bit + "0";
}

}

bin = Integer.parseInt(bit, 2);



ret = ret + (char)bin;


}

return ret;

}


[color=#FF0000]//加密程序[/color] 就是这加密与PB的效果不一样
public static String EnCode(String code) {

String binary = "", ret = "", bit = "";
int bin, len;

byte[] byt = code.getBytes();

for (int k = 0; k < byt.length; k++) {


bit = "";


binary = Integer.toBinaryString(bin);

len = 8 - binary.length();

for (int i = 0; i < len; i++) {
binary = "0" + binary;
}

for (int n = 0; n < binary.length(); n++) {

if (binary.substring(n, n + 1).equals("0")) {
bit = bit + "1";
} else {
bit = bit + "0";
}

}



bin = Integer.parseInt(bit, 2); //二进制转换为十进制

bit = (char)bin;

ret = ret + bit;

}

return ret;


}
...全文
1237 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
caok 2010-02-19
  • 打赏
  • 举报
回复
这个加密解密的程序主要是将密码进行运算加密成为汉字,然后在由汉字解密为密码。
caok 2010-02-19
  • 打赏
  • 举报
回复
关于算法当然搞清楚了呀,不然程序怎么写呀,

解密程序当然没有问题,与powerbuilder中的实现效果是一样的,主要是加密程序。
fatRoach 2010-02-19
  • 打赏
  • 举报
回复
我只是给你指出程序上的错误,至于算法你又没有说明,粗看一下貌似仅仅是将每个byte取反码进行加解密,但是看到这行时我又晕了,这是啥啊
bin = byt[k] & 0xFF;

if (bin > 128) {
k++;
}

如果是取反码的话,用位运算就可以了,哪用这么大动干戈,但是我看到上面那段代码后,又怀疑可能没那么简单,你最好先把算法搞搞清楚再研究程序怎么写。
caok 2010-02-19
  • 打赏
  • 举报
回复
bit = String.valueOf(bin);

这些我都试过了,无法进行转换。
caok 2010-02-19
  • 打赏
  • 举报
回复
引用 1 楼 fatroach 的回复:
Java codebinary= Integer.toBinaryString(bin);
我想这里应该是:

bin=byt[k]
Java codebinary= Integer.toBinaryString(byt[k]);

这里已经是这个了.我漏写了bin=byt[k]

另外
Java codebit= (char) bin;
bit是String,bin是int,把int强转成char赋值给String?OTL
用String类提供的方法转吧:
Java codebit= String.valueOf(bin);
吴佳峻 2010-02-19
  • 打赏
  • 举报
回复
xuexi le!!!
fatRoach 2010-02-19
  • 打赏
  • 举报
回复
binary = Integer.toBinaryString(bin);

我想这里应该是:
binary = Integer.toBinaryString(byt[k]);

另外
bit = (char) bin;

bit是String,bin是int,把int强转成char赋值给String?OTL
用String类提供的方法转吧:
bit = String.valueOf(bin);

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧