小牟Andorid下面MD5具体实现的思路总结

Android的开发往往需要一定数目demo

从今起MD5一些加密算法提取物 看看是如何实现的

首先,我们必须明确为什么加密?

1 数据安全处理

2 防止数据窃取

3 有效的避免恶意攻击

4 保证文件完整性

5 优化搜索 作为文件(数据)索引存在等

以上是基本的加密技术的目的

2 眼下在安卓中使用的加密技术都有哪些?

这个是站点上找到的一些资料 主要是2中算法 一个是SHA1算法 一个就是MD5加密 

其它的还有TEA对称型加密算法 效率比較高

TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,支持128位password,与BlowFish一样TEA每次仅仅能加密/解密8字节数据。TEA特点是速度 快、效率高,实现也很easy。因为针对TEA的攻击不断出现,所以TEA也发展出几个版本号,各自是XTEA、Block TEA和XXTEA。

Android 2.2.1默认使用的加密算法是AES 256-SHA1,但从2010年公布的Android 2.3開始,它默认使用的是一种更弱的加密算法 RC4-MD5。

当Android应用建立SSL加密连接,假设没有指定的话它将默认使用RC4-MD5进行加密。

有人可能会怀疑美国国家安全局(NSA)收买了Android开发人员以减少破解加密连接监视Android用户的难度。

但Georg Lukas在分析了Android源码之后发现。默认加密算法的次序是Sun/甲骨文的Java定义的。Java规格定义的TLS安全传输协议加密算法列表中前两种为RC4和MD5。2011年公布的Java 7增加椭圆曲线加密算法改进了加密列表。但Android是基于 JDK 6,仍然沿用十年前定义的默认加密算法列表。

接下来我们主要使用的还是SHA1 和 MD5 那么我们怎样实现一个MD5加密呢

一般我们在实现MD5加密主要有下面几个步骤

1 首先得到一个信息摘要器 MessageDigest 然后设置MD5

2  我们获取要加密的数据 比如 password=“123456”

3 将这些数据转换成字节数据 password.getBytes()

4 循环对每一个字节数进行处理

这里主要是做2个处理 一个是 对每一个字节数据进行 与运算 通常是与上一个16进制的数

比如 int number = p $ 0xff;

然后 将得到的number‘进行转换为16进制的数

Integer.toHexString(number);

假设这个数转换后的长度为1 那么我们就补0

不满八个二进制那么我们就补全

算法思想:

1 用每一个byte去和11111111做与运算 而且得到的是一个int类型的值 byte&11111111

2 把int类型转换成16进制并返回String类型

3 不满8个2进制位就补全

5 详细的实现算法例如以下

public class Demo {
	public static void main(String[] args) throws NoSuchAlgorithmException {
		//信息摘要器
		MessageDigest digest = MessageDigest.getInstance("md5");
		String password = "123456";//加密字符
		StringBuffer buffer = new StringBuffer();
		byte [] result = digest.digest(password.getBytes());
		for (byte b : result) {
			int number = b & 0xff;//不按标准加密
			//转换成16进制
			String numberStr = Integer.toHexString(number);
			if (numberStr.length()==1) {
				buffer.append("0");
			}
			buffer.append(numberStr);
		}
		//MD5加密结果
		System.out.println(buffer.toString());
	}
}

一般大型站点或者银行 都是对数据进行多次MD5 加密 一般在5次以上银行一般在20次左右 所以非常难被破解 还有就是 在进行每一个byte运算的时候并不一定是依照标准的与16位进行加密 能够使用随意的方式进行 比方与上一个32位的数据 或者夹杂其它字符 甚至能够取反等方式进行加密 这些都被称为加盐

在andorid中我们主要是使用MD5Utils工具进行加密 默认使用标准加密方式

比如 我们能够在我们要加密的地方 这样做

String password = "123456";

MD5Utils.encode(password);

这里有一个MD5Utils的小加密工具 传上来大家能够看看

MD5Utils下载

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-12 22:05:41

小牟Andorid下面MD5具体实现的思路总结的相关文章

小沐Andorid下面的MD5详细实现思路小结

安卓开发中时常需要些一些demo 现在就MD5加密算法进行一些抽取 看看都是怎么实现的 首先我们要明白为什么要加密? 1 对数据进行安全性处理 2 防止数据被盗 3 有效的避免恶意攻击 4 保证文件完整性 5 优化搜索 作为文件(数据)索引存在等 以上是主要的加密技术的目的 2 目前在安卓中使用的加密技术都有哪些? 这个是网站上找到的一些资料 主要是2中算法 一个是SHA1算法 一个就是MD5加密  其他的还有TEA对称型加密算法 效率比较高 TEA(Tiny Encryption Algori

实验吧MD5之守株待兔解题思路

解题链接 http://ctf5.shiyanbar.com/misc/keys/keys.php 解题思路 首先我们多打开几次解题链接,发现系统密钥大约在一秒钟左右变一次,所以联想到时间戳. 解题过程 编写python脚本,然后执行得出答案 python脚本代码 import time import requests def getTime(): return str(int(time.time()))#获取当前的时间戳 def getFlag(time1): url='http://ctf5

小数据量csv文件数据导入数据库(思路)

大致写写思路,因为sqlserver提供了可以直接导入的图形界面. 1.private static string GetConnectionString(string folderPath)  //文件夹路径 { string [email protected]"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="[email protected]"\;Extended Properties='Text;'"; return

卖萌向2048小游戏

五一前的某天 离散课上突发奇想 我是不是可以用c语言模拟各种小游戏 当时想了三个 贪吃蛇 2048 俄罗斯方块 俄罗斯方块的话..想起了ccf中的简单的模拟下落都熬了将近一个小时 更别说各种随机判断了 当场放弃..淞淞告诉我有现成的程序 几十行就可以..简直.. 然后思考了一下贪吃蛇 我的思想是枚举蛇身 没错就是枚!举! 反正不怕超时... 当时认为2048应该是最简单的 毕竟只有16个空 枚举起来..很方便..(只会枚举的渣渣瑟瑟发抖) 本来打算五一假期看看 然而当时准备省赛就忘了这件事 (其

MD5 消息摘要算法5

一.MD5定义 MD5即Message-Digest Algorithm 5(消息-摘要算法5),为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将数据运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2.MD3和MD4. 也有说法MD5不是加密算法, 因为如果目的是加密,必须满足的一个条件是加密过后可以解密.但是MD5是无法从结果还原出原始数据的. 二.MD5特点 1.压缩性:任意长度的数据,算出的MD5值

MD5值算法原理

MD5原理说明 一.MD5算法介绍. MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,从名字来看就知道它是从MD3.MD4发展而来的一种加密算法,其主要通过采集文件的信息摘要,以此进行计算并加密.通过MD5算法进行加密,文件就可以获得一个唯一的MD5值,这个值是独一无二的,就像我们的指纹一样,因此我们就可以通过文件的MD5值来确定文件是否正确,密码进行加密后也会生成MD5值,论坛就是通过MD5值来验证用户的密码是否正确的. 二.MD5算法实现. MD5是输入

王小云

王小云教授,1966年生于山东诸城,1983年至1993年就读于山东大学数学系,先后获得学士.硕士和博士学位,导师潘承洞.1993年毕业后留校任教.2005年获国家自然科学基金杰出青年基金资助,同年入选清华大学“百名人才计划”,2005年6月受聘为清华大学高等研究中心“杨振宁讲座教授”,现为清华大学“长江学者特聘教授”. 中文名 王小云 出生地 山东诸城 出生日期 1966年 职    业 博士 毕业院校 山东大学数学系 主要成就 国家自然科学基金  百名人才计划  中国青年女科学家奖 目录 1

Java利用MessageDigest提供的MD5算法加密字符串或文件

MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了解这些的话,可以去百度百科:MD5.SHA1.消息摘要算法. Java已经实现了MD5.SHA1算法.利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果. 1.字符串的MD5(下面的代码有详细注释) public static String s

385cc412a70eb9c6578a82ac58fce14c 教大家破解md5验证值

Md5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是工具中的一个重要"辅助工具".md5解密主要用于网络攻击,在对网站等进行入侵过程,有可能获得管理员或者其他用户的账号和密码值(md5加密后的值).获得的密码值有两种情况,一种是明文,另外一种就是对明文进行了加密.如果密码值是加密的,这个时候就需要对密码值进行判断,如果是采取md5加密,则可以通过MD5Crack3等软件进行破解.王小云教授的md5密码碰撞破解算法没有公布,因此目前Md5解密方式主要采取暴力破解, 即软件通过