zoukankan      html  css  js  c++  java
  • 关于URLEnCode,URLDeCode,Base64,公钥私钥

    1、Base64非常适合http、mime协议,所以在一些类似webservice中可以用Base64。

      用法如下:传出去之前先 Convert.ToBase64String(encryptedBytes)

           接收方则 Convert.FromBase64String(sourceString)

    2、公钥私钥加密解密,这个网上很多,可以自己去找一下,但如果要和Base64搭配使用,要注意两点:

      1、Base64的长度是有限制的

      2、建议先对文本做加密处理,在最外面再做Base64处理。

    3、URLEnCode,对url进行转码,

      3.1、数字和字母不变,中文会变化。
      3.2、空格变为"+"号。
      3.4、其他被编码成"%"加上他们的ascii的十六进制,规律是这样的。
    4、URLDeCode,对url进行解码,
      方法一:如果是页面解码,其实Request.QueryString()会自动做解码的动作。无需再写一遍URLDeCode。
      方法二:如果是其他地方调用,如Andriod调用.net的WebService,则需要做一次解码的动作。
     
     
    最近在做的一个项目遇到类似的情况,.net写了一个WebService,其他网站调用这个WebService,同时手机端也在调用这个WebService,处理的情况是不一样的,具体的设计思路如下:
    1、网站和手机端调用的方法是不一样的,网站调用的Webservice不需要做URLDecode,手机端调用的则需要做URLDecode
    2、WebService中,针对一个要传递的文本先做公钥加密,然后处理成base64。代码如下(代码不贴全,只做一个参考)
            #region 公钥加密/私钥解密 (不限长string)
    
            public static string EncryptWithPublicKey(string sourceString)
            {
                var sourceBytes = Encoding.UTF8.GetBytes(sourceString);
                var encryptedBytes = EncryptWithPublicKey(sourceBytes);
                var encryptedString = Convert.ToBase64String(encryptedBytes);
                return encryptedString;
            }
    
            public static string DecryptWithPrivateKey(string sourceString)
            {
                var sourceBytes = Convert.FromBase64String(sourceString);
                var decryptedBytes = DecryptWithPrivateKey(sourceBytes);
                var decryptedString = Encoding.UTF8.GetString(decryptedBytes);
                return decryptedString;
            }
    
            #endregion 公钥加密/私钥解密(不限长string)

    3、网站调用时直接用var str = Request.QueryString["str"]这个即可,不再需要Decode了, Request.QueryString会自动解码。

    4、Android则需要先DeCode。

    5、在3、4的基础上继续做Base64处理,私钥解密等处理,见代码中的DecryptWithPrivateKey详情。

  • 相关阅读:
    华为測试 字符串运用-password截取
    海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找
    MapReduce源代码浅析
    POJ 2524 并查集
    unity3d 建树篇
    mysql 自己定义存储过程和触发器
    如何在线缩小jpg图片的大小
    Winodws安装系统时,通过安装磁盘进行分区
    新年新气象
    java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
  • 原文地址:https://www.cnblogs.com/takako_mu/p/3548010.html
Copyright © 2011-2022 走看看