关键是bankService.Service()的指向是什么404是无法找到指定站点,也就是说站点的地址不正确

解决方案 »

  1.   

    将加密后的数据传到WebService前,用Base64进行编码,WebService收到后进行反向操作
      

  2.   

    用Base64编码也不行,比如密文«ÍSW8½编码后变成P6iqU1c4CD8a,而由P6iqU1c4CD8a反向操作时就变成了?íSW8?,第一个和最后一个根本转换不回来。请问大神们还有什么高策?
      

  3.   


    这不可能WebService实际上就是对指定的URI发送一个XML,实际上就是个文本,不转换肯定不行
      

  4.   

    实际上是这么回事,键盘上存在的常见数字、字母、符号都能自由转换,而一遇到特别特殊的ascⅡ码对应的字符时就会出现转换异常,变成”?“。如 Àƒ¶å ö0³¢©½èPª‰¤ùÞ 等一些特别不常见的字符,进行反向操作后就会都变成一堆问号
      

  5.   

    那需要重写输入框的键盘事件,自已把用户输入内容转换为byte[],不要借助string类去处理输入的内容.
      

  6.   

    不知道楼主的des加密是怎么写的,提供一下我使用的des加密算法,没有楼主所说的问题。 public class SymmetricMethod
        {
            private SymmetricAlgorithm mobjCryptoService;
            private string Key;
            /// <summary>
            /// 对称加密类的构造函数
            /// </summary>
            public SymmetricMethod()
            {
                mobjCryptoService = new RijndaelManaged();
                Key = "Guz(%&hj7x89H$yuBI0789FtmaT5&fvBERRy76*h%(HilJ$lhj!y6&(*jkP87jH7";
            }
            /// <summary>
            /// 获得密钥
            /// </summary>
            /// <returns>密钥</returns>
            private byte[] GetLegalKey()
            {
                string sTemp = Key;
                mobjCryptoService.GenerateKey();
                byte[] bytTemp = mobjCryptoService.Key;
                int KeyLength = bytTemp.Length;
                if (sTemp.Length > KeyLength)
                    sTemp = sTemp.Substring(0, KeyLength);
                else if (sTemp.Length < KeyLength)
                    sTemp = sTemp.PadRight(KeyLength, ' ');
                return ASCIIEncoding.ASCII.GetBytes(sTemp);
            }
            /// <summary>
            /// 获得初始向量IV
            /// </summary>
            /// <returns>初试向量IV</returns>
            private byte[] GetLegalIV()
            {
                string sTemp = "E4ghj*Ghg7!rNIfu&95JJFETGfghUb#er58HBh(u%g6HJ($jhWk7&!hk4ui%$hjk";
                
                mobjCryptoService.GenerateIV();
                byte[] bytTemp = mobjCryptoService.IV;
                int IVLength = bytTemp.Length;
                if (sTemp.Length > IVLength)
                    sTemp = sTemp.Substring(0, IVLength);
                else if (sTemp.Length < IVLength)
                    sTemp = sTemp.PadRight(IVLength, ' ');
                return ASCIIEncoding.ASCII.GetBytes(sTemp);
            }
            /// <summary>
            /// 加密方法
            /// </summary>
            /// <param name="Source">待加密的串</param>
            /// <returns>经过加密的串</returns>
            public string Encrypto(string Source)
            {
                byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
                MemoryStream ms = new MemoryStream();
                mobjCryptoService.Key = GetLegalKey();
                mobjCryptoService.IV = GetLegalIV();
                ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
                CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
                cs.Write(bytIn, 0, bytIn.Length);
                cs.FlushFinalBlock();
                ms.Close();
                byte[] bytOut = ms.ToArray();
                return Convert.ToBase64String(bytOut);
            }
            /// <summary>
            /// 解密方法
            /// </summary>
            /// <param name="Source">待解密的串</param>
            /// <returns>经过解密的串</returns>
            public string Decrypto(string Source)
            {
                byte[] bytIn = Convert.FromBase64String(Source);
                MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
                mobjCryptoService.Key = GetLegalKey();
                mobjCryptoService.IV = GetLegalIV();
                ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
                CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
                StreamReader sr = new StreamReader(cs);
                return sr.ReadToEnd();
            }
        }