none
请教ASCII码转化的问题 RRS feed

  • 问题

  •  

     最近要对单位以前用VFP写的一个管理信息系统进行重写,其中登录窗体中,要对输入的密码进行加密写入数据库,原理很简单,就是先将密码的每位字符转化为相应的ASCII码,然后加11,再转化为字符。我用C#是这样写的:

            public static string GetMd5Str(string ConvertString)
            {
                string ym = ConvertString.Trim();
                string bm = "";
                ASCIIEncoding aE = new ASCIIEncoding();
                foreach(char c in ym)
                {
                       bm += aE.GetString(new byte[]{(byte)((int)aE.GetBytes(c.ToString())[0] + 11)});
                }
                return bm;
            }

     

    新系统交付后,单位怕出问题,旧系统仍然留着备用,这时出现问题了,以前VFP代码是:

        N = LEN(YM)
        FOR I = 1 TO N
           YMZF = SUBSTR(YM,I,1)
           YMASC = ASC(YMZF) + 11
           BM = BM + CHR(YMASC)
        ENDFOR

     

    两套加密结果不一致,数字还好,有字符时,VFP程序加密后的字符串里还有一些类似汉字的字符,而C#只会出现?这样的字符。

    不知道为什么,是否因为C#是基于Unicode的呢?希望达人们不吝赐教,感谢!

    • 已移动 msnetgodModerator 2009年5月20日 2:21 ([Loc]From:.NET Framework 相关)
    2008年11月8日 15:29

答案

  • Code Snippet

     

    byte[] YMASC= aE.GetBytes()

     

    for(int i=0;i<YMASC.Length;i++)

    {

    YMASC[i]+=11;

    }

    bm = Encoding.GetEncoding("gb2312").GetString(YMASC);

     

     

     

    2008年11月9日 6:05
    版主