数据MD5+base64、AES+RSA加密原理

在服务器与终端设备进行HTTP通讯时,常常会被网络抓包、反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数。为了确保信息的安全,我们必须进行接口参数加密和解密。本文只讲原理,代码实现可以另去百度。

(一)、MD5和base64加密

** MD5简介**
MD5是一个安全的哈希算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;
MD5有以下两个最主要的特性。

  • 加密的不可逆性,只能够加密,不能够解密。
  • 任意长度的明文经过加密后长度都是固定的,长度为16进制32位。

它还有以下几种特点

  1. 容易计算:根据原数据计算出MD5很容易
  2. 抗修改性:MD5对原数据十分的敏感,哪怕只修改了一个字节,得到的MD5的值与之前的MD5数值都有很大的差别。
  3. 防伪性能高:已知原数据和它的MD5值,想要找到相同MD5值得数据是非常困难的,可以说几乎是不可能的。

** base64 简介**

  • base64的编码都是按字符串长度,以每3个8bit的字符为一组,
  • 然后针对每组,首先获取每个字符的ASCII编码,
  • 然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
  • 然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
  • 然后将这4个8bit的字节转换成10进制,对照Base64编码表 (下表),得到对应编码后的字符。

** Base64 编码表 **

Value Char Value Char Value Char Value Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
  • MD5: 全称为message digest algorithm 5(信息摘要算法), 可以进行加密, 但是不能解密, 属于单向加密, 通常用于文件校验。
    MD5 运算结果是一个固定长度为128位的二进制数,经过一系列的运算得到32个16进制数。(每一位16进制数可以代替4位二进制数,所以128位二进制数写成16进制就变成了128/4=32 个。)
  • Base64: 把任意序列的8为字节描述为不能直接用肉眼识别的形式, 通常用于邮件、http加密. 登陆的用户名和密码字段通过它加密, 可以进行加密和解密。
    base64算法就是将浏览器中不允许出现的+=号给替换成-.这些符号。
  • 为什么用md5算法加密后又要利用base64算法进行编码:因为md5加密后得到的数据是128位的字节数组,将字节数组用base64算法加密后得到的是字符串,这样有利于在其在数据库中的存储
MD5校验文件流程

(二)、AES+Base64加密

简单的MD5/Base64等已经难以满足当下的数据安全标准,本文简单的介绍下AES与Base64的混合加密与解密"

** ASE简介 **
AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。


ASE对称加密

(三)、AES+RSA加密

** RSA是非对称加密 **

概念:
公钥:给需要加密方
私钥:解密者自己留
密钥生成过程:
1:随机选择两个质数p、q,计算出 n=p x q
2:计算出不大于N与N互质的数的数量  f(n)=(p-1) x (q-1).
3:取e不大于f(n)且与f(n)互质的数.
4:计算出e x d mod f(n) = 1 时 d的值.
5:则(e,n)为公钥(d,n)为私钥
加密过程:
原文^e mod n = 密文
解密过程:
密文^d mod n = 原文

关于RSA的公私钥具有以下重要特性:

  • 对于一个私钥,有且只有一个与之对应的公钥。生成者负责生成私钥和公钥,并保存私钥,公开公钥
  • 公钥是公开的,但不可能通过公钥反推出私钥,或者说极难反推,只能穷举,所以只要密钥足够长度,要通过穷举而得到私钥,几乎是不可能的
  • 通过私钥加密的密文只能通过公钥解密,公钥加密的密文只有通过私钥解密

AES加密也叫对称加密:A用密码对数据进行AES加密后,B用同样的密码对密文进行AES解密。

具体操作方法:

  1. 在终端中采用openssl方式输入密钥的相关属性(公司名、邮箱等),然后在终端当前所在的地址下,生成公钥和私钥共7个文件(7个文件如何使用请看附录的拓展了链接)。

  2. 此时假设Android客户端拥有公钥PublicKey,服务器端拥有公钥PublicKey和私钥PrivateKey。

  3. 安卓发送请求到服务器端,安卓随机生成Byte[]随机密码,假设RandomKey=“123456”,通过AES算法,对Json数据利用进行加密。

  4. 但是此刻服务器并不知道客户端的RandomKey是什么,因此需要同时将Randomkey传给服务器,否则服务器无法通过AES对Json数据进行解密。但是如果直接发送请求,Randomkey就会暴露,所以要对RandomKey进行不可逆的RSA加密。

  5. 安卓将使用Randomkey进行AES加密的Json数据,和使用PublicKey进行RSA加密的RandomKey通过HTTP传送到服务器端。数据请求工作完成。

  6. 服务器端接收到AES加密的Json数据和Rsa加密的RandomKey数据。

  7. 服务器通过私钥PrivateKey对加密后的RandomKey进行Rsa解密。得到安卓生成的原始Randomkey。

  8. 利用原始的RandomKey对加密后的Json数据进行AES对称解密。至此已经得到安卓端发过来的原始Json数据。进行常规的服务器业务操作,然后将返回数据通过安卓端的RandomKey进行AES加密gouhou后,Response返回。

  9. 安卓端接收到Response的数据后,利用之前本地生成的RandomKey直接进行AES解密即可。

AES+RSA加密流程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容