Android本地数据安全问题,常用加密简单汇总,网上搜集的资料,方便查看
来源:互联网 发布:linux 中单引号的作用 编辑:程序博客网 时间:2024/05/19 18:43
一、Android数据加密之Rsa加密
RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。
公钥加密只能用私钥解密,私钥加密只能用公钥解密,还可以分段加密、分段解密。
RSA的安全性依赖于大数分解,小于1024位的N已经被证明是不安全的,而且由于RSA算法进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,这是RSA最大的缺陷,因此通常只能用于加密少量数据或者加密密钥,但RSA仍然不失为一种高强度的算法。
使用:
1、生成密钥对
2、使用公钥加密、私钥解密 或者 私钥加密、公钥解密
私钥的加解密都很耗时,所以可以根据不同的需求采用不能方案来进行加解密。个人觉得服务器要求解密效率高,客户端私钥加密,服务器公钥解密比较好一点
加密后数据大小的变化:数据量差不多是加密前的1.5倍。
二、 Android数据加密之Aes加密
AES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。替代原先的DES。
三、Android数据加密之Des加密
DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES使用56位密钥,以现代 计算能力,24小时内即可被破解。
四、Android数据加密之MD5加密
MD5加密特点:
压缩性:任意长度的数据,算出的MD5值长度都是固定的。
容易计算:从原数据计算出MD5值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5应用场景:
一致性验证、数字签名、安全访问认证
五、 Android数据加密之Base64编码算法
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其 实Base64只能算是一个编码算法,对数据内容进行编码来适合传输。在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上 交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。
六、 Android数据加密之异或加密算法
异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。
使用场景:
两个变量的互换(不借助第三个变量)、数据的简单加密解密
实现:
1、固定key的方式(这种方式加密解密 算法一样)
public byte[] encrypt(byte[] bytes) {
if (bytes == null) {
return null;
}
int len = bytes.length;
int key = 0x12;
for (int i = 0; i < len; i++) {
bytes[i] ^= key;
}
return bytes;
}
byte[] bytes = encrypt("whoislcj".getBytes());//加密
Stringstr1 = new String(encrypt(bytes));//解密
2.不固定key的方式
加密实现
publicbyte[] encrypt(byte[] bytes) {
if(bytes == null) {
returnnull;
}
int len = bytes.length;
int key = 0x12;
for (int i = 0; i < len; i++) {
bytes[i] = (byte) (bytes[i] ^ key);
key = bytes[i];
}
return bytes;
}
解密实现
public byte[] decrypt(byte[]bytes) {
if (bytes == null) {
return null;
}
int len = bytes.length;
int key = 0x12;
for (int i = len - 1; i> 0; i--) {
bytes[i] = (byte)(bytes[i] ^ bytes[i - 1]);
}
bytes[0] = (byte)(bytes[0] ^ key);
return bytes;
}
byte[]bytes = encrypt("whoislcj".getBytes());//加密
String str1 = newString(decrypt(bytes));//解密
位运算可以实现很多高级,高效的运算。比如说加密,乘法中的n次方就是右移n位,速度还快。IM二进制数据包
采用异或算法第一能够实现加密,第二采用异或加密算法不会改变二进制数据的长度这对二进制数据包封包起到不小的好
处。
- Android本地数据安全问题,常用加密简单汇总,网上搜集的资料,方便查看
- 一些网上搜集的Qtopia的资料
- 网上搜集的storm有用资料 2
- 网上搜集的有用资料备忘
- openwrt 网上资料搜集
- android学习过程搜集资料汇总
- 数据转换-delphi资料网上搜集(来源:万一的博客)
- 用PNG显示不规则窗口关键代码(网上搜集资料整理)方便查找
- 网上收集的关于Android uses-permission的资料,方便查找
- 从网上搜集的基于角色的权限设计资料
- 网上搜集的storm 一些有用的资料
- android本地数据加密
- java中图片显示-网上搜集的资料
- 网上英语资料汇总
- 网上英语资料汇总
- 网上资料汇总。。。
- Android 在网上查看图片(最简单的版本)
- 数据挖掘资料搜集
- 安卓仿手机网易新闻app项目开发系列之(二)轮播图显示和RecyclerView适配器编写
- SQL简明实例教程
- Vlan使用--------2
- 学习笔记---高等数学前置知识---数列、排列组合、解不等式
- 接口interface
- Android本地数据安全问题,常用加密简单汇总,网上搜集的资料,方便查看
- Python递归函数
- 支付宝转账又出新方法:悬浮条自动识别输入,避免失误尴尬
- CSDN第一篇博客
- PL/SQL(三):复合数据类型
- Mysql数据库文件系统规划
- ORACLE 优化第一波
- JAVA多线程的应用场景和应用目的举例
- nginx+tomcat配置负载均衡