CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

字符转换问题,高手请进,急救!!!!!!!!!!!

楼主lanren(Everything over IP)2001-11-02 21:05:47 在 Java / J2SE / 基础类 提问

function   EncryptStr(SourceStr:   string):   string;  
  var  
      StrLen:   Integer;  
      TempStr:   string;  
      TempStr1:   string;  
      i:   Integer;  
      Byte1:   Byte;  
  begin  
      TempStr   :=   '';  
      TempStr1   :=   '01';  
      StrLen   :=   Length(SourceStr);  
      for   i   :=   1   to   StrLen   do  
          begin  
              Byte1   :=   Ord(SourceStr[i])   +   120;  
              TempStr1[1]   :=   Chr(Byte1);  
              TempStr1[2]   :=   Chr(Byte1   +   7);  
              TempStr   :=   TempStr   +   TempStr1;  
          end;  
      EncryptStr   :=   TempStr;  
  end;  
   
  如何做一个与之完全等效的java方法,由于java用的是unicode,急救!!!!!!!!!!   ,给源码!!!!!!!!!! 问题点数:150、回复次数:16Top

1 楼lanren(Everything over IP)回复于 2001-11-02 21:07:51 得分 0

高人救命Top

2 楼lanren(Everything over IP)回复于 2001-11-02 21:11:25 得分 0

高人救命      
  Top

3 楼lanren(Everything over IP)回复于 2001-11-02 21:14:17 得分 0

完全一样的输入,完全一样的输入出Top

4 楼titansavent(titan)回复于 2001-11-03 04:19:25 得分 0

不懂,你想问什么?是想把int   付给   string   么,  
  若是如此,   可以用,     String   a   =   String.valueOF(i)   +   ""     试一下,应给没问题Top

5 楼lanren(Everything over IP)回复于 2001-11-03 12:53:58 得分 0

是这样的,我有一个以前用dephi开发的应用系统,有一个密码验证过程,其中的密码是用上述的dephi函数加密保存在数据库中的,现在要在一个servlet中对实现这个验证过程,用的还是以前的数据,我从页面得到用户输入的密码明文,想用一个java方法(在javaBean中)加密后与从数据库中取得的密码(经dephi函数加密的)进行比较实现验证过程,现在的问题是如何用一个相同的密码明文,经java方法运算得到与原数据库中取得的密文完全相同,主要是汉字编码问题,  
   
   
   
  例如,明文'hljdkh'用上述dephi函数运算得到的密文是'噻潆忾茔汴噻'  
   
  现在的问题是要用java实现一个方法,输入'hljdkh',得到输出'噻潆忾茔汴噻'  
  'Top

6 楼lanren(Everything over IP)回复于 2001-11-03 12:54:47 得分 0

帮忙Top

7 楼ChDw(米)回复于 2001-11-03 13:14:10 得分 150

        public   static   String   encode(String   src)  
  {  
      byte[]   ch   =   src.getBytes();  
      byte[]   result   =   new   byte[ch.length   *   2];  
      for(int   i   =   0;   i   <   ch.length;   i++)   {  
          result[i*2]   =   (byte)(ch[i]+120);  
          result[i*2   +   1]   =   (byte)(ch[i]+127);  
      }  
      return   new   String(result);  
  }  
  Top

8 楼lanren(Everything over IP)回复于 2001-11-03 14:04:10 得分 0

楼上的高人,多谢了,请帮我看一个这段代码为什么不对,马上给分  
   
    public     String   encrypt(String   source)  
        {  
                  byte   bt   ;  
                  StringBuffer   temp=new   StringBuffer();  
        int   a1,a2;//asci码值  
        int   strLen=source.length();  
                  //source=new   String(source.getBytes("ISO8859-1"));  
        for(int   i=0;i<strLen;i++)  
                  {  
            a1=(int)source.charAt(i)+120;  
                      a2=a1+7;  
                      a1=(a1<<8)|a2;  
                      temp.append((char)a1);  
                  }  
                  return   temp.toString();Top

9 楼ChDw(米)回复于 2001-11-03 14:21:08 得分 0

因为在java里面,中文字符的存储使用的是Unicode,所以你算出来的a1并不是一个GB2312下  
  的字符,Top

10 楼lanren(Everything over IP)回复于 2001-11-03 14:35:49 得分 0

可是从数据库中取得的字符不也是用unicode表示的吗;在dephi中的密文'噻潆忾茔汴噻'与java中从数据库取得的密文的内码表示为什么会相同,在dephi中汉字的内码是GB2312,在java是的内码是unicode,它们为什么会相同?????  
   
  还有a1的十六进制值是不是在(char)a1的时候发生了变化?????????  
   
   
  Top

11 楼ChDw(米)回复于 2001-11-03 14:41:06 得分 0

第一个循环内a1=0xe0e7,在delphi中由于使用GB2312编码所以a1代表了“噻”字符  
  但是在java里面,0xe0e7由于使用Unicode,所以根本不是“噻”字符  
  Top

12 楼lanren(Everything over IP)回复于 2001-11-03 14:46:28 得分 0

那你的代码为什么会得到“噻”字符??????????Top

13 楼lanren(Everything over IP)回复于 2001-11-03 14:49:37 得分 0

它的算法与我的应该是一样的,ch[0]ch[1]放在一起与a2<<8|a2不是一样的结果吗,难道在  
  new   String()内码发生了变化,小弟愚味!!!!  
  Top

14 楼ChDw(米)回复于 2001-11-03 14:52:56 得分 0

ch[0]ch[1]放在一起之后得到的字符并不是a2<<8&brvbar;a2,  
  java会通过一个算法把ch[0],ch[1]算出Unicode直=0x567BTop

15 楼lanren(Everything over IP)回复于 2001-11-03 14:55:06 得分 0

是不是new   String的时候进行这种转换的?Top

16 楼lanren(Everything over IP)回复于 2001-11-03 14:59:06 得分 0

to   ChDw(米)   
  我的QQ是:1344293  
  留下你的QQ,交个朋友好吗???以后多请教Top

相关问题

  • 一秒钟问题急救,将字符转换成十六进制与将16进制转换为字符的函数?
  • 字符转换
  • 字符转换
  • 字符转换
  • 字符转换
  • 字符转换
  • 字符转换?
  • 字符转换
  • 字符转换????
  • 关于16进制字符转换

关键词

  • 函数
  • 密码
  • 加密
  • 数据库
  • tempstr
  • dephi函数
  • sourcestr
  • 问题
  • 方法
  • strlen

得分解答快速导航

  • 帖主:lanren
  • ChDw

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo