Android 各个平台的加密算法的了解
一. 阿里聚安全平台加密算法的了解
1、需要了解的基本概念
- 抗碰撞性:寻找两个不同输入得到相同的输出值在计算上是不可行的,需要大约 的时间去寻找到具有相同输出的两个输入字符串。
- 不可逆:不可从结果推导出它的初始状态。
而在实际开发中,密钥如何保存始终是绕不过的坎?如果硬编码在代码中容易被逆向,如果放在设备的某个文件,也会被有经验的破解者逆向找到,在这里推荐阿里聚安全的安全组件服务,其中的安全加密功能提供了开发者密钥的安全管理与加密算法实现,保证密钥的安全性,实现安全的加解密操作。
二. Android 最常用的八种算法
Demo: 加密工具 library 库
1.DES,3DES
概述:对称加密算法
优点:算法公开、计算量小、加密速度快、加密效率高
缺点:双方都使用同样密钥,安全性得不到保证
2.AES
概述:对称加密算法
优点:算法公开、计算量小、加密速度快、加密效率高
缺点:双方都使用同样密钥,安全性得不到保证
3.XOR
概述:异或加密:原字符或数字 m 与一个数值 k 进行异或运算得到结果 r ,则用 r 与 k 做异或运算即可还原到 m
优点:两个变量的互换(不借助第三个变量),简单的数据加密
缺点:加密方式简单
4.Base64
概述:算不上什么加密算法,只是对数据进行编码传输
5.SHA
概述:非对称加密算法。安全散列算法,数字签名工具。著名的图片加载框架Glide在缓存key时就采用的此加密
优点:破解难度高,不可逆
缺点:可以通过穷举法进行破解
6.RSA
概述:非对称加密算法,最流行的公钥密码算法,使用长度可变的秘钥
优点:不可逆,既能用于数据加密,也可以应用于数字签名
缺点:RSA非对称加密内容长度有限制,1024位key的最多只能加密127位数据
7.MD5
概述:非对称加密算法。全程:Message-Digest Algorithm,翻译为消息摘要算法
优点:不可逆,压缩性,不容易修改,容易计算
缺点:穷举法可以破解
从上述简单的介绍,我们发现,算法分为了两大类:
(1)对称加密算法
(2)非对称加密算法
各自的特点也一目了然:
(1)对称加密算法可以互逆,即通过key加密,也可以通过key来解密
(2)非对称加密则不可互逆
三. 穷举法(的举例)
鸡兔同笼问题:今有鸡兔同笼,上有35头,下有94足,问鸡兔各几何?
这个问题曾经我的一个商人朋友跟我讲起过,像大多数人一样,我从数学的角度出发,设鸡有 x 只,兔有 y 只, x + y = 35 并且 2*x + 4*y = 94,正当我忙于计算出结
果的时候,我的一位商人同学跟我说鸡有 23 只,兔有 12只。对于计算的速度让我感到惊讶,然后我就问他,你怎么算这么快?这时,他一本正经的跟我说,你们这些读书
人,脑子都被固化了,思维形成了一种固定的模式,我们生意人就不会这么想。我好奇地问:那你们怎么想?他继续说:我们假设这些动物都训练有素,这是我吹了一下口哨
,然后,所有动物都抬起一只脚,这时鸡1只脚站立,兔子3只脚站立,那就减少了35只脚,这时我再次吹一次口哨,假想这时鸡腾空了,兔子还有2只脚站立在地上,这时还剩
下 94 - 2*35 = 24 只,而兔子只有两只脚站立地上, 24/2 = 12 就是兔子的只数, 35 - 12 = 23 不就是鸡的只数了吗!!!听完后,我恍然大悟,赞叹道:不愧是商人啊!
加入这就是一道实际的应用题,我们也不用太多的追究其解法和算法,可作为一名程序员我们需要知道和了解这样一道问题,如何用代码的形式表现出来,这才是我们追逐的点。
那就让我们一起来看看吧!
IOS 举例:
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- int qiongju(int headNum, int footNum, int* chicken, int* rabbit)
- {
- int result = 0;
- // i 代表鸡的 数量 j 代表兔子的数量
- for (int i = 0; i <= headNum; i++)
- {
- for (int j = 0; j <= headNum; j++)
- {
- if ( (i+j == headNum) && (2*i + 4*j == footNum) )
- {
- result = 1;
- *chicken = i;
- *rabbit = j;
- }
- }
- }
- return result;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- system("color a");
- int headNum = 0;
- int footNum = 0;
- int chicken = 0;
- int rabbit = 0;
- printf("请输入兔子和鸡 头 的总数:");
- scanf("%d", &headNum);
- printf("请输入兔子和鸡 脚 的总数:");
- scanf("%d", &footNum);
- int result = qiongju(headNum, footNum, &chicken, &rabbit);
- if (result)
- {
- printf("鸡的数量是%d只, 兔子的数量是%d只\n", chicken, rabbit);
- }
- else
- {
- printf("此题无解\n");
- }
- return 0;
- }
Android 各个平台的加密算法的了解相关推荐
- android操作系统优势,Android操作系统平台最大的优势
Android操作系统平台最大的优势 2015-12-25 17:10:27 1074浏览 如今移动互联网势不可挡,移动软件应用市场就像是一个巨大的金矿.发展潜力巨大,而Android开发软件平台无疑 ...
- 怎样搭建Android开发平台(转)
Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机系统平台,早期由Google开发,后由开放手机联盟(Open Handset Alliance)开 ...
- android wear 处理器,联发科推Android Wear平台可穿戴处理器
据外媒VR-Zone报道,联发科日前发布了全新的低功耗处理器MT2601,专门为谷歌Android Wear平台打造. 据悉,MT2601支持Android Wear操作系统,是一套为可穿戴设备提供的 ...
- Android 多平台AR SDK 集成使用
Android 多平台AR SDK 使用 1.Vuforia AR SDK 手机 端 Vuforia SDK 1.sdk地址下载 2.下载samples 3.项目运行 4.License申请 5.Im ...
- android全平台基于ffmpeg解码本地MP4视频推流到RTMP服务器
音视频实践学习 android全平台编译ffmpeg以及x264与fdk-aac实践 ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器 android全平台编译ffm ...
- android全平台编译libjpeg-turbo并基于ANativeWindow加载JPEG图片
图形图像实践 android全平台编译libjpeg-turbo并基于ANativeWindow加载JPEG图片 android全平台编译libpng并基于ANativeWindow加载PNG图片 概 ...
- omap android,德州仪器基于Android 移动平台演示OMAP
2009 年 2 月 18 日,德州仪器 (TI) 在本周世界移动通信大会 上展示运行于 TI 新推出的 OMAP 3 移动开发平台上的最新 Android 移动平台.TI 在展会中演示 Andro ...
- Android开发平台
Android开发平台 Android开发平台 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- android mtk平台,总结自己在android MTK平台的学习
受老罗的影响,由于本人还是菜鸟,不能像老罗一样重头开始研究整个系统,决定从就近的工作开始,从android MTK 的驱动-->中间层-->应用层,一步一步研究. 一边看书,一边搜集网上的 ...
最新文章
- bootstrap的日期选择器 完整源码demo附效果图
- HBase 与Hive数据交互整合过程详解
- python selenium 验证码识别_Python网络爬虫之如何用代码识别图片验证码
- 蓝牙模块怎么指定查询另一个蓝牙模块_蓝牙模块以IPEX端口外接天线、PCB板载天线最为常见...
- win10mongodb链接_Windows 10 安装 Mongodb
- 浅谈安卓Xutils框架(一)
- laravel之生成PDF文档-TCPDF
- java word 分段符,Word2013文档中插入分隔符(分节符)的方法
- DeviceDriver(十四):多点触摸(MT协议,Input子系统)
- 2019海康威视内推
- 7.2版升7.5+php7,帝国CMS7.2版升级到7.5版的详细步骤方法(已测)
- 1、spss中做相关分析
- 1949年的国庆节(10月1日)是星期六.......
- 计算机网络个人简历范文,计算机网络个人简历范文
- 【物联网服务NodeJs-5天学习】第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql
- 结对项目--黄金点游戏(邓乐曾亮)
- WebStorm2018破解(2018年10月9日 16:13实测有效)
- 网页版多人聊天室系统
- 天人合一之毕设——准备阶段——3 HME仿真器
- Sting str = aaaa 的形式定义一个字符串最大长度只能有 65534 个。