发现一个sqlite的数据库中的一个字段 存储的全是数字和字母,但用其本身的程序调出来的都是汉字,对照如下:400万 91F513700CBF
700万 8DF410737327
1970 55B6DA2163
75% EF1779ADFD78
50.267.45.128 D13752B3D74FC4B1D53E5FA2958F
科学技术          5828DB9E74706F795F
巫峡 79786506F7
自己的住房 7D650FF881767912830EFE请教这些是如何编码的呢

解决方案 »

  1.   

    上面的有点乱,重新整理了一下
    -------------------------------------------
    编码前             编码后
    -------------------------------------------
    400万             91F513700CBF
    700万             8DF410737327
    1970            55B6DA2163
    75%             EF1779ADFD78
    50.267.45.128   D13752B3D74FC4B1D53E5FA2958F
    科学技术          5828DB9E74706F795F
    巫峡              79786506F7
    自己的住房        7D650FF881767912830EFE
    ---------------------------------------------请教这些是如何编码的呢
      

  2.   

    不可能是转换为十六进制来存储,因为字符不可能转换为十六进制..百度的编码方式是:
    System.Web.HttpUtility.UrlEncode(string, System.Text.UnicodeEncoding.GetEncoding("gb2312")).ToUpper();
      

  3.   

    lz看一下编码后的“91F612700CBF”,解码后是不是“500万”
    如果是的话,大致的编码方式就可以猜到了
      

  4.   

    回6楼,从他的库里面找不到 91F612700CBF ,所以也不知道 解码后是多少
    但是,400万 91F513700CBF  这个和你给的 500万的编码差不多,估计有可能是
    麻烦6楼兄弟说说如何编码的,谢谢了
      

  5.   

    lz直接在他的库里面修改,把“91F513700CBF”修改成“91F612700CBF”,再看一下原来出“400万”的地方出来了什么
    (“500万”这个本身就是从“400万”推测出来的,像是肯定的)
      

  6.   

    不可能是转换为十六进制来存储,因为字符不可能转换为十六进制.. C# code
    百度的编码方式是:
    System.Web.HttpUtility.UrlEncode(string, System.Text.UnicodeEncoding.GetEncoding("gb2312")).ToUpper();
     
     汉字转换为十六进制
     
            string str = "巫峡";
            char[] cs = str.ToCharArray();        string hxstr = "";
            for (int i =0;i< cs.Length; i++ )
            {
            hxstr += ((int)cs[i]).ToString("X2");
            }
            Response.Write(hxstr);      
      

  7.   

    对,应该是“501万”,前面计算犯了个小错了,呵呵
    大致的编码思路是:
    第一位随机数,当做初始化向量(也就是对称加密的IV)
    后面的加密内容,每一个Byte做一次对称加密,加密算法还要推敲一下,字符估计是ANSI编码的
    最后把加密得到的Byte转成16进制保存到数据库