前些日子,有个朋友的附件出了BASE64译码错,无法正确查看,于是,自己想写个解码的程式,在MSDN里找到了解码到文件的EXAMPLE,可是自己想改成解码到文本框中,于是自己动手,可是发现,自己写出来的,只能解码成英文,汉字不行,自己试了很多方法,可是不是英文,就是二进制码,要不就是ASCII,当采用下面的方法,却只能解出了一个汉字,晕死拉,请大家帮解决一下,找出问题所在位置,
private void btnDecode_Click(object sender, System.EventArgs e)
{
tbxSource.Text = DecodeFromFile(tbxCryptography.Text);
} public static string DecodeFromFile(string Cryptography)
{
FromBase64Transform Base64Transform = new FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces); byte[] InputBytes = Encoding.Default.GetBytes(Cryptography); byte[] OutputBytes = new byte[Base64Transform.OutputBlockSize]; string tmpString = "";
//Transform the data in chunks the size of InputBlockSize.
int i = 0;
//int j = 0;
while(InputBytes.Length - i > 4)
{
Base64Transform.TransformBlock(InputBytes, i, 4, OutputBytes, 0);
i += 4;
//for(j=0;j<OutputBytes.Length;j++)
//tmpString += OutputBytes[j].ToString();
tmpString += Encoding.Default.GetString(OutputBytes,0,OutputBytes.Length);
}
            
//Transform the final block of data.
OutputBytes = Base64Transform.TransformFinalBlock(InputBytes, i, InputBytes.Length - i);
//for(j=0;j<OutputBytes.Length - i;j++)
//tmpString += OutputBytes[j].ToString();
//tmpString += Convert.ToChar(OutputBytes[j]);

tmpString += Encoding.Default.GetString(OutputBytes,0,OutputBytes.Length);
//Free up any used resources.
Base64Transform.Clear(); return tmpString;
}

解决方案 »

  1.   

    BASE64码为以下编码:
    wcnE/s7Eu6/Iy7LFzfjX7tDC1dDGuNfK0bYNCiAgICAgDQogICAgICAgICAgIA0KICAgICAgICAg
    ICANCiAgICAgICAgICAgDQogICAgICAgICAgIA0KICAgICAgICAgICANCiAgICAgICAgICAgDQog
    ICAgICAgICAgIA0KICAgICAgICAgICANCiAgICAgICAgICAgDQogICAgICAgICAgIA0KICAgICAg
    ICAgICANCiAgICAgICAgICAgDQogICAgICAgDQogICAgICAgICAgICDX1Lavy9HL99XQxrjQxc+i
    veG5+yANCiAgICAgICAgICAgDQogICAgICAgICAgICDQ8iC6xSDV0CDGuCC1pSDOuyDV0CDGuCC4
    2iDOuyC3oiCyvCDKsSC85CC92CDWuSDKsSC85CANCiAgICAgICAgICAgICAgMSDW0Ln6y7DO8bGo
    ICDP+srbvq3A7Vu147v3NbTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAg
    ICAgICAgMiCxsb6pytC7qsjLz8i35rn6vMrOxLuv0tXK9bei1bnT0M/euavLviAgseC8rVu147v3
    MLTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgMyCxsb6pytC7
    qsjLz8i35rn6vMrOxLuv0tXK9bei1bnT0M/euavLviAgvMfV31u147v3MrTOXSAyMDA1xOo21MIx
    MMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgNCCxsb6pytDS1dDjyrHJ0M7Eu6/S1cr1
    t6LVudPQz97U8MjOuavLviAgxr3D5snovMZbteO79zG0zl0gMjAwNcTqNtTCMTDI1SAyMDA1xOo4
    1MIxyNUgDQogICAgICAgICAgICAgIDUgx+W7qrTz0act1tC5+ruqwrzQxc+ivLzK9dHQvr/L+SAg
    yO28/rmks8zKplu147v3MLTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAg
    ICAgICAgNiDH5buqtPPRpy3W0Ln6u6rCvNDFz6K8vMr10dC+v8v5ICDTsrz+uaSzzMqmW7Xju/cx
    tM5dIDIwMDXE6jbUwjEwyNUgMjAwNcTqONTCMcjVIA0KICAgICAgICAgICAgICA3IFRDTNLGtq/N
    qNDF09DP3rmry77J8tH0t9a5q8u+ICDP+srbvq3A7Vu147v3MbTOXSAyMDA1xOo21MIxMMjVIDIw
    MDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgOCBUQ0zSxravzajQxdPQz965q8u+yfLR9LfWuavL
    viAgx7DMqL3TtP1bteO79ze0zl0gMjAwNcTqNtTCMTDI1SAyMDA1xOo41MIxyNUgDQogICAgICAg
    ICAgICAgIDkgt6jFybyvzcXWsNK117DBycT+sOzKwrSmICDE2sfaW7Xju/cwtM5dIDIwMDXE6jbU
    wjEwyNUgMjAwNcTqONTCMcjVIA0KICAgICAgICAgICAgICAxMCC3qMXJvK/Nxdaw0rXXsMHJxP6w
    7MrCtKYgIMnMzvG0+rHtW7Xju/cztM5dIDIwMDXE6jbUwjEwyNUgMjAwNcTqONTCMcjVIA0KICAg
    ICAgICAgICAgICAxMSDNs8D2o6i5+rzKo6m0tMPAu/q5uSAgw8DI3b2yyqZbteO79zS0zl0gMjAw
    NcTqNtTCMTDI1SAyMDA1xOo41MIxyNUgDQogICAgICAgICAgICAgIDEyIMHJxP7KosrAzbzM2rnj
    uObOxLuvtKuypbei1bnT0M/euavLviAgv827p76twO1bteO79zC0zl0gMjAwNcTqNtTCMTDI1SAy
    MDA1xOo41MIxyNUgDQogICAgICAgICAgICAgIDEzIMHJxP7KosrAzbzM2rnjuObOxLuvtKuypbei
    1bnT0M/euavLviAgv827p7T6se1bteO79zS0zl0gMjAwNcTqNtTCMTDI1SAyMDA1xOo41MIxyNUg
    DQogICAgICAgICAgICAgIDE0IMny0fS3vc/yueO45tPQz965q8u+ICDP+srbtPqx7Vu147v3MrTO
    XSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgMTUgyfLR9MGqus/X
    ytG2ueO45tPQz965q8u+ICDGvcPmyei8xlu147v3MrTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjU
    wjHI1SANCiAgICAgICAgILG+tM6y6dGvubIxNTDM9dDFz6IgytfSsyDJz9KzIM/C0rMgzrLSsyDS
    s7TOo7oxLzEw0rMgIDE1zPXQxc+iL9KzINeqo7ogtdox0rMgtdoy0rMgtdoz0rMgtdo00rMgtdo1
    0rMgtdo20rMgtdo30rMgtdo40rMgtdo50rMgtdoxMNKzICAgDQogICAgIA0KICAgICAgwcnE/sqh
    zsS7r9LVyvXIy7LF0MXPos34sObIqMv509AgICAgDQoNCg==
      

  2.   

    不用自己写,.net有Convert.FromBase64String可以解Base64的编码
      

  3.   

    测试
    Console.WriteLine(System.Text.Encoding.Default.GetString(Convert.FromBase64String(@"wcnE/s7Eu6/Iy7LFzfjX7tDC1dDGuNfK0bYNCiAgICAgDQogICAgICAgICAgIA0KICAgICAgICAg
    ICANCiAgICAgICAgICAgDQogICAgICAgICAgIA0KICAgICAgICAgICANCiAgICAgICAgICAgDQog
    ICAgICAgICAgIA0KICAgICAgICAgICANCiAgICAgICAgICAgDQogICAgICAgICAgIA0KICAgICAg
    ICAgICANCiAgICAgICAgICAgDQogICAgICAgDQogICAgICAgICAgICDX1Lavy9HL99XQxrjQxc+i
    veG5+yANCiAgICAgICAgICAgDQogICAgICAgICAgICDQ8iC6xSDV0CDGuCC1pSDOuyDV0CDGuCC4
    2iDOuyC3oiCyvCDKsSC85CC92CDWuSDKsSC85CANCiAgICAgICAgICAgICAgMSDW0Ln6y7DO8bGo
    ICDP+srbvq3A7Vu147v3NbTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAg
    ICAgICAgMiCxsb6pytC7qsjLz8i35rn6vMrOxLuv0tXK9bei1bnT0M/euavLviAgseC8rVu147v3
    MLTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgMyCxsb6pytC7
    qsjLz8i35rn6vMrOxLuv0tXK9bei1bnT0M/euavLviAgvMfV31u147v3MrTOXSAyMDA1xOo21MIx
    MMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgNCCxsb6pytDS1dDjyrHJ0M7Eu6/S1cr1
    t6LVudPQz97U8MjOuavLviAgxr3D5snovMZbteO79zG0zl0gMjAwNcTqNtTCMTDI1SAyMDA1xOo4
    1MIxyNUgDQogICAgICAgICAgICAgIDUgx+W7qrTz0act1tC5+ruqwrzQxc+ivLzK9dHQvr/L+SAg
    yO28/rmks8zKplu147v3MLTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAg
    ICAgICAgNiDH5buqtPPRpy3W0Ln6u6rCvNDFz6K8vMr10dC+v8v5ICDTsrz+uaSzzMqmW7Xju/cx
    tM5dIDIwMDXE6jbUwjEwyNUgMjAwNcTqONTCMcjVIA0KICAgICAgICAgICAgICA3IFRDTNLGtq/N
    qNDF09DP3rmry77J8tH0t9a5q8u+ICDP+srbvq3A7Vu147v3MbTOXSAyMDA1xOo21MIxMMjVIDIw
    MDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgOCBUQ0zSxravzajQxdPQz965q8u+yfLR9LfWuavL
    viAgx7DMqL3TtP1bteO79ze0zl0gMjAwNcTqNtTCMTDI1SAyMDA1xOo41MIxyNUgDQogICAgICAg
    ICAgICAgIDkgt6jFybyvzcXWsNK117DBycT+sOzKwrSmICDE2sfaW7Xju/cwtM5dIDIwMDXE6jbU
    wjEwyNUgMjAwNcTqONTCMcjVIA0KICAgICAgICAgICAgICAxMCC3qMXJvK/Nxdaw0rXXsMHJxP6w
    7MrCtKYgIMnMzvG0+rHtW7Xju/cztM5dIDIwMDXE6jbUwjEwyNUgMjAwNcTqONTCMcjVIA0KICAg
    ICAgICAgICAgICAxMSDNs8D2o6i5+rzKo6m0tMPAu/q5uSAgw8DI3b2yyqZbteO79zS0zl0gMjAw
    NcTqNtTCMTDI1SAyMDA1xOo41MIxyNUgDQogICAgICAgICAgICAgIDEyIMHJxP7KosrAzbzM2rnj
    uObOxLuvtKuypbei1bnT0M/euavLviAgv827p76twO1bteO79zC0zl0gMjAwNcTqNtTCMTDI1SAy
    MDA1xOo41MIxyNUgDQogICAgICAgICAgICAgIDEzIMHJxP7KosrAzbzM2rnjuObOxLuvtKuypbei
    1bnT0M/euavLviAgv827p7T6se1bteO79zS0zl0gMjAwNcTqNtTCMTDI1SAyMDA1xOo41MIxyNUg
    DQogICAgICAgICAgICAgIDE0IMny0fS3vc/yueO45tPQz965q8u+ICDP+srbtPqx7Vu147v3MrTO
    XSAyMDA1xOo21MIxMMjVIDIwMDXE6jjUwjHI1SANCiAgICAgICAgICAgICAgMTUgyfLR9MGqus/X
    ytG2ueO45tPQz965q8u+ICDGvcPmyei8xlu147v3MrTOXSAyMDA1xOo21MIxMMjVIDIwMDXE6jjU
    wjHI1SANCiAgICAgICAgILG+tM6y6dGvubIxNTDM9dDFz6IgytfSsyDJz9KzIM/C0rMgzrLSsyDS
    s7TOo7oxLzEw0rMgIDE1zPXQxc+iL9KzINeqo7ogtdox0rMgtdoy0rMgtdoz0rMgtdo00rMgtdo1
    0rMgtdo20rMgtdo30rMgtdo40rMgtdo50rMgtdoxMNKzICAgDQogICAgIA0KICAgICAgwcnE/sqh
    zsS7r9LVyvXIy7LF0MXPos34sObIqMv509AgICAgDQoNCg==")));结果:
    辽宁文化人才网最新招聘资讯
         
               
               
               
               
               
               
               
               
               
               
               
               
           
                自动搜索招聘信息结果 
               
                序 号 招 聘 单 位 招 聘 岗 位 发 布 时 间 截 止 时 间 
                  1 中国税务报  销售经理[点击5次] 2005年6月10日 2005年8月1日 
                  2 北京市华人先锋国际文化艺术发展有限公司  编辑[点击0次] 2005年6月10日 2005年8月1日 
                  3 北京市华人先锋国际文化艺术发展有限公司  记者[点击2次] 2005年6月10日 2005年8月1日 
                  4 北京市艺秀时尚文化艺术发展有限责任公司  平面设计[点击1次] 2005年6月10日 2005年8月1日 
                  5 清华大学-中国华录信息技术研究所  软件工程师[点击0次] 2005年6月10日 2005年8月1日 
                  6 清华大学-中国华录信息技术研究所  硬件工程师[点击1次] 2005年6月10日 2005年8月1日 
                  7 TCL移动通信有限公司沈阳分公司  销售经理[点击1次] 2005年6月10日 2005年8月1日 
                  8 TCL移动通信有限公司沈阳分公司  前台接待[点击7次] 2005年6月10日 2005年8月1日 
                  9 法派集团职业装辽宁办事处  内勤[点击0次] 2005年6月10日 2005年8月1日 
                  10 法派集团职业装辽宁办事处  商务代表[点击3次] 2005年6月10日 2005年8月1日 
                  11 统丽(国际)创美机构  美容讲师[点击4次] 2005年6月10日 2005年8月1日 
                  12 辽宁盛世图腾广告文化传播发展有限公司  客户经理[点击0次] 2005年6月10日 2005年8月1日 
                  13 辽宁盛世图腾广告文化传播发展有限公司  客户代表[点击4次] 2005年6月10日 2005年8月1日 
                  14 沈阳方向广告有限公司  销售代表[点击2次] 2005年6月10日 2005年8月1日 
                  15 沈阳联合资讯广告有限公司  平面设计[点击2次] 2005年6月10日 2005年8月1日 
             本次查询共150条信息 首页 上页 下页 尾页 页次:1/10页  15条信息/页 转: 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页   
         
          辽宁省文化艺术人才信息网版权所有    
      

  4.   

    有现成的阿有Convert.FromBase64String,.net自带的内码转换的类还是比较全的。
      

  5.   

    可能是C#对内存上的管理错误,用内存查看器查看了一下byte[] OutputBytes,好象TransformBlock并没有把输出写在正确的位子上。如果按以前的VC基于指针的做法是这样while(InputBytes.Length - i > 4)
    { Base64Transform.TransformBlock(InputBytes, i, 4, OutputBytes, 0);
    i += 4;
    OutputBytes += 4;
    }
    tmpString = Encoding.Default.GetString(OutputBytes,0,OutputBytes.Length);