00:00
正确对理解和使用Android端加密算法。一、前沿本文主要讨论针对andro这样的移动端应用开发时如何正确的理解目前常用的加密算法,为诸如即时通讯应用的实战开发如何在合适的场景下选择适合的算法提供一些些参考。二、密码学基本概念密码学的三大作用加密,Encryption认证,Authentic auto鉴定,Identificationation加密,防止坏人获取你的数据,认证,防止坏人修改了你的数据而你却并没有发现。健全,防止坏人假冒你的身份。3、Android SKG提供的API Android SKG使用的API和Java提供的基本相似,由以下部分组成,E Java cryptto graph y architecture jc Java加密体系结构,2、Java crypto graph ytension je Java加密扩展包。3、Java secure sockets extension Jessie e Java安全套接字扩展包。4、Java authentication and authentication service JS Java鉴别语安全服务。JC提供基本的加密框架,如证书、数字签名、消息摘要和密钥对产生器对应的Android API中的以下几个包。
01:19
JC扩展了JC提供了各种加密算法、摘要算法、密钥管理等功能,对应的Android API中的以下几个包,J提供了SCL基于安全套接层的加密功能,使用HTTS加密传输使用对应的Android API主要是Java。Nii z包中,JS提供了在Java平台上进行用户身份鉴别的功能,对应的Android API主要在以下几个包。四常用算法之BASE64编码Android提供了BASE64编码的工具类Android u base64可以直接使用,不用自己去实现BASE64编码的算法了如下。
02:04
5常用算法之随机数生成器。在Android加密算法中需要随机数时,要使用secure random来获取随机数如下,注意不要给secure random设置种子,调用seated constructor或者set seed byte是不安全的。Secure random默认使用的是de random作为种子产生气,这个种子是不可预测的。开发者建议,1、不要使用random类来获取随机数,2、在使用secure时候不要设置种子。使用以下函数设置种子都是有风险的。6常用算法之hash算法。Hash算法是指任意长度的字符串输入,此算法能给出固定恩比特的字符串输出,输出的字符串一般称为hash值,具有以下两个特点,1、抗碰撞性,2不可逆。开发者建议,1建议使用Sha-256-3算法,如使用Sha-256算法,对message字符串做哈希。
03:04
2、不建议使用MD2、MD4、MD52-1RAPP MD算法来加密用户密码等敏感信息。这一类算法已经有很多破解办法,例如MD5算法,网上有很多查询的字典库,给出MD5值可以查到加密前的数据。3、不要使用哈希函数作为对称加密算法的签名。4、注意当多个字符串串接后再做hash要非常当心。七消息认证算法。要确保加密的消息不是别人伪造的,需要提供一个消息认证码Mac message authentication cut1消息认证码是带密钥的hash函数,基于密钥和hash函数密钥双方事先约定,不能让第三方知道。开发者建议建议使用h Mac杠十二五六算法。避免使用CBC-Mac h Mac-SHA256。例子如下,八、对称加密算法在对称加密算法中,数据发性方将明文原始数据和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解毒源文,则需要使用加密用过的密药及相同算法跟逆算法对密文进行解密,才能使其灰复成可读铭文。在对称加密算法中,使用的密钥只有一个。
04:31
发收性双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。该算法的缺点是,如果一旦密钥泄露,那么加密的内容将都不可信了。开发者建议,1、建议使用AES算法,2、deaths默认的是56位的加密密钥,已经不安全,不建议使用,3、注意加密模式,不要使用ECB模式。EV模式不安全说明问题的经典的3张图片如下,铭文是。
05:05
用EB加密模式后,用CBC加密模式后。4、Android提供的as加密算法API默认使用的是ECB模式,所以要显示指定加密算法为CBC或CB模式,可带上pkes 5、padding填充as密钥长度最少是128位,推荐使用256位。九非对称加密非对称加密算法需要两个密钥,公开密钥public key和私有密钥private key. 公开密钥与私有密钥是一对,如果用公开密钥对数据进行密,只有用对应的私有密钥才能解密,如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密成可以做数字签名。非对称加密主要使用的是RC算法开发者建议1、注意密钥长度不要低于512位,建议使用2048位的密钥长度。
06:03
使用RC进行数字签名的算法,如2、使用RC算法做加密。RCA加密算法应使用cipher git instance RA EV o EP withs Sha、2、56、NA1PADDING,否则会存在重放攻击的风险。如10、加密算法PBPB是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑、多重加密等方法保证数据的安全性。开发者建议使用基于口令的加密算法,PB时,生成密钥时要加盐,盐的取值最好来自secure random, 并指定迭代次数,如。
我来说两句