java转码的问题

各位大大些,帮忙啊
遇到的问题是这样的
先说数据库是sqlserver的,密码字段是 varbinary(16),
现在是通过网站注册,然后用注册的账号在客户端软件上登录
以前网站是PHP的,是这样转密码的:
$EncTable = array('!'=>'95', '"'=>'88', '#'=>'9D', '$'=>'4C', '%'=>'F2',
'&'=>'3E', '\''=>'BB', '('=>'C0', ')'=>'7F', '*'=>'18', '+'=>'70',
','=>'A6', '-'=>'E2', '.'=>'EC', '/'=>'77',
'0'=>'2C', '1'=>'3A', '2'=>'4A', '3'=>'91',
'4'=>'5D', '5'=>'7A', '6'=>'29', '7'=>'BC', '8'=>'6E', '9'=>'D4', ':'=>'40',
';'=>'17', '<'=>'2E', '='=>'CB', '>'=>'72', '?'=>'9C',
'@'=>'A1', 'A'=>'FF', 'B'=>'F3', 'C'=>'F8',
'D'=>'9B', 'E'=>'50', 'F'=>'51', 'G'=>'6D', 'H'=>'E9', 'I'=>'9A', 'J'=>'B8',
'K'=>'84', 'L'=>'A8', 'M'=>'14', 'N'=>'38', 'O'=>'CE',
'P'=>'92', 'Q'=>'5C', 'R'=>'F5', 'S'=>'EE',
'T'=>'B3', 'U'=>'89', 'V'=>'7B', 'W'=>'A2', 'X'=>'AD', 'Y'=>'71', 'Z'=>'E3',
'['=>'D5', '\'=>'BF', ']'=>'53', '^'=>'28', '_'=>'44',
'`'=>'33', 'a'=>'48', 'b'=>'DB', 'c'=>'FC',
'd'=>'09', 'e'=>'1F', 'f'=>'94', 'g'=>'12', 'h'=>'73', 'i'=>'37', 'j'=>'82',
'k'=>'81', 'l'=>'39', 'm'=>'C2', 'n'=>'8D', 'o'=>'7D',
'p'=>'08', 'q'=>'4F', 'r'=>'B0', 's'=>'FE',
't'=>'79', 'u'=>'0B', 'v'=>'D6', 'w'=>'23', 'x'=>'7C', 'y'=>'4B', 'z'=>'8E',
'{'=>'06', '|'=>'5A', '}'=>'CC', '~'=>'62');
他把转之后的就可以把这个存进数据库了,比如输入8,存入数据库的是 6E 的byte值
从数据库里取出来也是6E,这个时候客户端取出来是6E
就是说客户端也是把数据库的值按16进制读取的,但是8的16进制的值又不是6E。

现在网站换成jsp的了,用hibernate,这时用户输入8,我该怎么存,才能让客户端软件取出来是6E呢?
"8".getBytes();肯定是不行的,这个存进去是56,出来肯定就不对了;

但是我又不能直接存"6E".getBytes();
搞一天了。
大大些帮忙啊

为什么不能直接存"6E".getBytes();

感觉有几种思路
第一种是用java里的集合类来实现

第二种是写一个方法 方法里全部是if 如果是什么就返回什么的意思

第三种是用数据库来实现 建立一张专门的表来实现

第四种方法就是用JavaScript在前台实现转码和解码(这种方法虽然比较复杂可以在不改后台代码的情况下使用)比较推崇用JQuery等框架 用xml 或者 json来传值给java

我就从第二种方法来简单的说下吧
第一步 接收转码并写入
写一个方法(或者一个类)
大体的代码如下
public static String ConversionByte(String str)throws Exception{
String old_str = str;
String new_str = old_str;
String result="";
if(new_str.equals("8")){
result = "6E";
}
./*
.
.//其他的什么都一样的.....
.
.*/
return result;
}

这比如吧
我假设你现在从客户端接收过来的数值的名称为 "password"

我这里在servlet里接受这个值
String password= request.getParameter("password");
掉用这个方法
这里我直接在在servlet里了 并且是静态
String NewPassWord = this.ConversionByte(password);
这时候的 8 不就变成 6E了吗
然后赋值给你的javaBean
这里我假设你的javaBean里的password为
vo1.setPassword(NewPassWord);
这样你存到数据库不就可以了吗

第二步取出
也不知道你取出的时候就想要 6E 还是说想要还原成 8
如果要还原你再写个方法
public static String ReturnByte(String str)throws Exception{
String old_str = str;
String new_str = old_str;
String result="";
if(new_str.equals("6E")){
result = "8";
}
./*
.
.//其他的什么都一样的.....
.
.*/
return result;
}
在从数据库读出后直接掉用这个方法不就可以了吗
不知道你的所谓的 6E 还需要转成什么格式的
至于怎么传给界面我想就不用我说了吧 :x

你自己用java代码实现一下$EncTable吧,将里面的数组值已map形式初始化到缓存中,做一个加密与解密的方法,至于你想存到数据中是什么可以由你自己控制。