Android客户端与服务器进行数据传输时,一般会涉及到两类数据的加密情况,一类是只有创建者才能知道的数据,比如密码;另一类是其他比较重要的,但是可以逆向解密的数据。

第一类:密码类的数据,为了让用户放心注册,密码类的数据的加密一般都是经过双重加密的,第一重加密使用不可逆的MD5算法加密,第二重加密是可逆的加密,常见的可逆加密有对称加密和非对称加密。上述不可逆的意思就是一旦加密就不能反向得到密码原文,一般用来加密用户密码,app的服务器端一般存储的也都是密文密码,不然用户就太危险了,app的运营商也承担不起这么大的责任。虽然现在MD5加密生成的密文也可以破解了,但是我们不需要担心,因为我们可以采用多重加密方式来应对。在数据传输的过程中,首先把密码类数据经过MD5加密算法加密,然后再在外面使用可逆的加密方式加密一次,这样在数据传输的过程中,即便数据被截获了,但是想要完全破解,还是很难的(本来就不存在完全不能解密的加密)。

MD5加密算法:

[java] view plain copy
  1. public String getMD5Code(String info) {
  2. try {
  3. MessageDigest md5 = MessageDigest.getInstance("MD5");
  4. md5.update(info.getBytes("UTF-8"));
  5. byte[] encryption = md5.digest();
  6. StringBuffer strBuf = new StringBuffer();
  7. for (int i = 0; i < encryption.length; i++) {
  8. if (Integer.toHexString(0xff & encryption[i]).length() == 1) {
  9. strBuf.append("0").append(
  10. Integer.toHexString(0xff & encryption[i]));
  11. } else {
  12. strBuf.append(Integer.toHexString(0xff & encryption[i]));
  13. }
  14. }
  15. return strBuf.toString();
  16. } catch (Exception e) {
  17. // TODO: handle exception
  18. return "";
  19. }
  20. }

第二类数据:非密码类的数据,虽然这些数据也很重要,但是一般其他人截获了这些数据对他们意义不太大,这些数据我们一般采用可逆的加密方式加密,因为我们在服务器端还是需要这些数据的明文的,常用的可逆加密方法有:对称加密和非对称加密。何为对称加密?在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

转载于:https://www.cnblogs.com/ldq2016/p/9655755.html

Android:客户端和服务器之间传输数据加密相关推荐

  1. Android客户端与服务器之间的通信

    本文将介绍Android客户端与服务器端的通信的简单实现方法. 要两点需要注意的地方: 1.Android 端记得在AndroidManifest.xml里记得获取一下网络权限,否则无法进行网络通信, ...

  2. Android客户端与服务器之间传递json数据

    在服务器与客户端之间通信,json数据是一种常用格式,本文主要在服务器端构建数据,在客户端接收显示,并且在listview上显示出来 服务器端的构建 简单的javabean与返回结果函数与插入函数略过 ...

  3. c# 客户端 服务器传输文件,通过TCP在C++客户端/ C#服务器之间传输文件

    我目前正尝试通过TCP在C++客户端和C#服务器之间发送jpeg图片流. 我在C++端使用transmitFile函数,但我不知道我是否在C#端正确处理它. 我没有得到运行时错误,但图片没有显示,所以 ...

  4. 使用sftp在客户端与服务器之间进行文件传输

    知识点:sftp 步骤: 一. 登录服务器 使用命令格式:sftp 服务器主机名 二. 在客户端与服务器之间进行文件传输 命令put: 上传到服务器 put haha.txt 命令get: 下载到客户 ...

  5. JAVA实现服务器间拷贝文件,寻找在Java服务器之间传输大文件的好方法

    在这个项目中有一个主要的数据库服务器,其他安装在不同地方的服务器维护着自己的本地数据库.我们必须允许每个系统将其本地数据库更新为主要数据库上的任何版本.所有的服务器都运行Java环境.寻找在Java服 ...

  6. Android客户端与服务器交互方式-小结

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要 ...

  7. android linux网络连接,Android和Linux服务器之间的TCP连接

    我正在编写一个代码,需要每秒从Android移动设备向台式计算机(linux服务器)发送数据.由于数据经常发送,通过Http命中无法实现(因为会消耗时间),所以Tcp通信似乎是更好的选择,因为andr ...

  8. Android 客户端与服务器交互方式

    突然想到一个问题就是Android客户端与服务器交互有几种方式,因为在脑袋里想当然的就是webservices和json.要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台.传 ...

  9. 客户端和服务器之间的信息结构,客户端和服务器之间的信息结构

    客户端和服务器之间的信息结构 内容精选 换一换 说明:Web Service客户端和服务器间使用相同的编码方式,是为了防止出现乱码现象,也是实施输入校验的基础.安全加固:web server响应消息统 ...

最新文章

  1. 面向对象的程序开发技术C++教学课件系列之四
  2. 跨站请求伪造CSRF
  3. Window 7上架设SSRS 2005时遇到的几点小麻烦
  4. android studio : clang++.exe: error: invalid linker name in argument '-fuse-ld=bfd
  5. Git gitignore文件讲解
  6. wildfly10 配置mysql_WildFly配置MySql驅動
  7. 5.1 tensorflow2实现简单线性回归分析——python实战
  8. Spark之键值RDD转换(转载)
  9. 12.深入分布式缓存:从原理到实践 --- 社交场景架构进化:从数据库到缓存
  10. 操作系统课程设计报告(文件系统)
  11. 中国能源互联网行业十四五前景规划与发展战略格局分析报告2022-2028年版
  12. 2、Ubuntu下安装Vivado下的下载器驱动 Digilent 版本
  13. java通用教务管理系统_基于java的教务管理系统.doc
  14. [Android Studio]掌握Android Studio的五种常见控件和五种常见布局
  15. 用计算机弹小白船,光遇小白船怎么弹 小白船琴谱
  16. 【唐诗学习】五、山水田园诗派代表
  17. configure文件的生成
  18. zk和quartz实现分布式定时调度
  19. 手淘搜索流量下降时如何提升?
  20. 第九天javaSE基础(学生管理系统)

热门文章

  1. 【MySQL】Got fatal error 1236原因和解决方法
  2. 全世界都认为汉语是婴儿语(转载)
  3. spring 依赖注入的3种方式
  4. Facebook Docusaurus 中文文档 自定义页面
  5. shell脚本编程《linux下kvm虚拟机的创建、开启、显示、停止、重置》
  6. Spring 注解配置
  7. CentOS7内核升级
  8. 吐槽一下现在的代码编辑器
  9. Bullet 物理引擎 详细分析 Dbvt (4)
  10. OpenCv 005---图像像素的算术操作