成都网站建设设计

将想法与焦点和您一起共享

android算法,Android算法题怎么准备

Android加密算法总结

1.概念:

站在用户的角度思考问题,与客户深入沟通,找到聂荣网站设计与聂荣网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册雅安服务器托管、企业邮箱。业务覆盖聂荣地区。

Base64是一种用64个字符(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)来表示二进制数据的方法,只是一种编码方式,所以不建议使用Base64来进行加密数据。

2.由来:

为什么会有Base64编码呢?因为计算机中数据是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。在网络上交换数据时,比如图片二进制流的每个字节不可能全部都是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送,把不可打印的字符也能用可打印字符来表示,所以就先把数据先做一个Base64编码,统统变成可见字符,降低错误率。

3.示例:

加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。

1.DES

DES全称为Data Encryption Standard,即数据加密标准,是一种使用 密钥加密 的块算法。

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

2.3DES

3DES(或称为Triple DES)是三重 数据加密算法 (TDEA,Triple Data Encryption Algorithm)块密码的通称。是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。

3.AES

AES全称Advanced Encryption Standard,即高级加密标准,当今最流行的对称加密算法之一,是DES的替代者。支持三种长度的密钥:128位,192位,256位。

AES算法是把明文拆分成一个个独立的明文块,每一个明文块长128bit。这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。

但是这里涉及到一个问题:假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding):

AES的工作模式,体现在把明文块加密成密文块的处理过程中。

加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。

1.SHA

安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法,且若输入的消息不同,它们对应到不同字符串的机率很高。

SHA分为SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512五种算法,后四者有时并称为SHA-2。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的杂凑算法。

2.RSA

RSA算法1978年出现,是第一个既能用于数据加密也能用于数字签名的算法,易于理解和操作。

RSA基于一个数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可提供给任何人使用,私钥则为自己所有,供解密之用。

3.MD5

MD5信息摘要算法 (英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。具有如下优点:

XOR:异或加密,既将某个字符或者数值 x 与一个数值 m 进行异或运算得到 y ,则再用 y 与 m 进行异或运算就可还原为 x。

使用场景:

(1)两个变量的互换(不借助第三个变量);

(2)数据的简单加密解密。

Android 算法之排序算法(快速排序)

快速排序(Quick Sort)的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:

Android 多点触控算法理解(Multi-touch)

三个手指向屏幕传递的东西可以被抽象为一个个的触摸点(Pointer)。

按照触碰到屏幕的顺序来分,每个Pointer都有一个index,这个算法有点特别。现在举例来帮助你理解。

看到Index,你是否想起了数组下标?没错你可以认为这三个Pointer被安置在了一个数组里,数组大小为Pointer的个数。

有一天,我拿右手的三根手指(食指A,中指B,无名指C)在屏幕上做滑动手势,我是 先用食指A 接触屏幕, 再拿中指B 接触到, 最后拿无名指C 接触到屏幕,这三根手指的起始位置都贴着屏幕的 最左边 也就是 X轴接近于0 的地方。这时候 以触碰到屏幕的次序为依据 ,这三根手指分别被赋予了各自的index,其中 食指A最先 接触,index为 0 ; 中指B第二个 接触,index为 1 ; 无名指C第三个 接触,index为 2 ;

无聊透顶的我在往右滑动的过程中,把 中指B松开 了,这下 index为1的中指B 从数列中被移除了,安卓说:哦, index为1 的这个地方被移除过Pointer,并且这个index为1的位置还是 第一个被移除 的,我记录下来了。

移除完后呢,总不能空着吧,现在就 两个 Pointer在屏幕上,我总不能按三个来算吧。我是把目前 index为0 的 Pointer(食指A) 转移到index为1的位置上,还是把目前 index为2 的 Pointer( 无名指C ) 转移到index为1的位置上呢?

是的,谷歌和你一样都很机智,他们把 index为2的向前移 了,这样数组尺寸就变小了。

既然之前说了我无聊透顶,目前我好像还不够无聊,为了贯彻这个词语,我在快要滑到 屏幕右侧 的时候,我 又加了 一根手指进来,这次加的还不是原来那根 黄金中指B ,而是我的 小拇指D !而且非常风骚地伸到了屏幕的 左侧 去了,这意味着我这个 Pointer小拇指D的X值是很小 的,正当我盯着 index为2的位置 观看我风骚小拇指创造的位置数据时,惊奇地发现我的小拇指被赋予的 index竟然为1!!! 在后来的实验中, 不管我放的 是原来率先释放的中指B还是什么一阳指,卫生指。他们被赋予的 index都是1!!!

比如index分别为0,1,2,3的四个Pointer,其中 index为2的Pointer率先 中途移除,然后 index为3的Pointer接着被移除 ,系统将 记录 哪个index是 最先出现空缺 的,哪个index是 第二个出现空缺 的,然后接下来新产生的Pointer将按 产生的顺序 ,先来的放到最先出现空缺的index上,在这里,最新来的Pointer将被放置在 最先出现空缺的 index为 2 的位置上。 下一个来的 Pointer将被放置在 index为3 的位置上.

Android 的几种加密方式

Android 中的最常用得到有三种加密方式:MD5,AES,RSA.

1.MD5

MD5本质是一种散列函数,用以提供消息的完整性保护。

特点:

1.压缩性:任意长度的数据,算出的MD5值长度都是固定的;

2.容易计算:从原数据计算出MD5值很容易;

3.抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的MD5值都有很大的区别

4.强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(及伪造数据)是非常困难的;

2.RSA加密

RSA加密算法是一种非对称加密算法,非对称加密算法需要两个密钥:公共密钥和私有密钥。公钥和私钥是配对的,用公钥加密的数据只有配对的私钥才能解密。

RSA对加密数据的长度有限制,一般为密钥的长度值-11,要加密较长的数据,可以采用数据截取的方法,分段加密。

3.AES加密

AES加密是一种高级加密的标准,是一种区块加密标准。它是一个对称密码,就是说加密和解密用相同的密钥。WPA/WPA2经常用的加密方式就是AES加密算法。


标题名称:android算法,Android算法题怎么准备
文章网址:http://chengdu.cdxwcx.cn/article/dssssic.html