zoukankan      html  css  js  c++  java
  • **17.app后端如何保证通讯安全--aes对称加密

    在上文《16.app后端如何保证通讯安全--url签名》提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点。在本文中,会介绍对称加密的具体原理,和详细的方案,使app通讯更加安全。


    1.对称加密的原理



      采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。


      其实很简单,假设有原始数据"1000", 把1000加5就得到密文"1005",得到密文"1005"后减5就得到原始数据"1000"。把原始数据加5就是加密算法,把密文减5就是解密算法,密钥就是5。


      本文所用的是AES这种通用的对称加密算法。


    2. api请求中AES算法的应用



      (1)curl简介


      在下面的例子中,会使用curl工具,先简单介绍一下。


      curl是利用URL语法在命令行方式下工作的开源文件传输工具。


      用到的参数:


      -X: 指定什么命令,例如post,get等。


      -H: 指定http header。


      -d: 制定http body的内容


      (2)怎么保证token在初次返回时的安全


      用下面的api返回加密的token


      curl -X POST


      -H "Token-Param:<时间戳>,<sdkversion>"


      -d  ‘Base64Encode(AES(token, secretKey))’


      http://test.com/api/login


      secretKey就是密钥,使用http header中的Token-Param中的16位长度。


      服务端返回时加密token的方法是用AES加密,密钥是secretKey。


      客户端解密token的方法是用AES解密,密钥是secretKey。


      (3) api请求中的加密


      假设更新用户数据的api调用如下


      curl -X POST


      -H "Token-Param:<时间戳>,<sdkversion>"


      -H  ‘Token:Base64Encode(AES(token, secretKey))’


      -d  ‘Base64Encode(AES(date, token))’


      http://test.com/api/user/update


      secretKey使用http header中的Token-Param中的16位长度。


      在上面的例子中,data是实际要post的数据。


      在这个过程中,token和post的数据都得到了加密保护。


      客户端发送时加密的过程


      (1)取http header中的Token-Param中的16位长度作为密钥,用AES加密token。


      (2)用token作为密钥,用AES加密data。


      服务端接收到这个api请求的解密过程:


      (1)取http header中的Token-Param中的16位长度作为密钥,用AES解密, 得到token。


      (2)用token作为密钥,用AES解密http body的内容,得到原文。


    3.对称加密方法的总结



      把token返回的时候,可以做个约定,在返回的时候截取某个字符串的一部分作为密钥,这个秘钥只用一次,就是用来解密token的,以后就只是用token来做秘钥了。

    http://blog.csdn.net/newjueqi/article/details/44177063

  • 相关阅读:
    HTML5 localStorage and sessionStorage
    WebViewJavascriptBridge-Obj-C和JavaScript互通消息的桥梁
    js控制手机号码中间用星号代替
    无法删除登录名 '***',因为该用户当前正处于登录状态。 (Microsoft SQL Server,错误: 15434)
    在QT中添加LIB的方法
    Android颜色代码
    判断ubuntu是32位还是64位
    Android应用市场App发布
    ubuntu目录结构(转)
    QT调用CHM方法
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/4344759.html
Copyright © 2011-2022 走看看