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下载

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

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

  1. 在小程序中使用md5

    使用md5.js的首先你要有md5.js这个文件https://github.com/emn178/js-md5 您也可以使用Bower安装js-md5. bower install md5 对于no ...

  2. 小牟有趣的PWN

    咳咳,主要是记一下最近学二进制然后工作室里面一个一起学pwn,然后遇到的一个比较好玩的题目. 一共呢,是两个文件,这也是最近学习pwn第一次做到两个文件的题目, 如果想要源文件,这边可以加我们的工作室 ...

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

    解题链接 http://ctf5.shiyanbar.com/misc/keys/keys.php 解题思路 首先我们多打开几次解题链接,发现系统密钥大约在一秒钟左右变一次,所以联想到时间戳. 解题过 ...

  4. 【微信小程序】使用setTimeout制作定时器的思路

    setTimeout(func, time)可以使得每隔time毫秒就执行一次func函数,常用来做计时器/时钟. 下面是在微信小程序中的使用思路,只截取了关键部分代码. var timer; // ...

  5. [小专题]另一种字符串匹配的思路——Shift-And算法

    吐槽:前两天打组队赛遇到一个字符串的题考了这个(见:http://acm.hdu.edu.cn/showproblem.php?pid=5972 ) 当时写了个KMP瞎搞然后TLE了(害),赛后去查了 ...

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

    大致写写思路,因为sqlserver提供了可以直接导入的图形界面. 1.private static string GetConnectionString(string folderPath)  // ...

  7. PAT 甲级 1017 Queueing at Bank (25 分)(模拟题,有点思维小技巧,第二次做才理清思路)

    1017 Queueing at Bank (25 分)   Suppose a bank has K windows open for service. There is a yellow line ...

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

    MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了 ...

  9. MD5值算法原理

    MD5原理说明 一.MD5算法介绍. MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,从名字来看就知道它是从MD3.MD4发展而来的一种加密算法,其主要通过采集文 ...

随机推荐

  1. JS经常使用正則表達式【分享】

    工作中JS经常使用表达式: 1)2010-09-10类型日期校验 2)推断正整数.字符串长度 3)校验长度,和是否空 4)推断字符串是否为空 5)比較字符大小 6)推断字符串长度 7)推断格式是否为E ...

  2. pygame系列_游戏窗口显示策略

    在这篇blog中,我将给出一个demo演示: 当我们按下键盘的‘f’键的时候,演示的窗口会切换到全屏显示和默认显示两种显示模式 并且在后台我们可以看到相关的信息输出: 上面给出了一个简单的例子,当然在 ...

  3. C++头文件保护符和变量的声明定义

    1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...

  4. Learning To Rank之LambdaMART前世今生

    1.       前言 我们知道排序在非常多应用场景中属于一个非常核心的模块.最直接的应用就是搜索引擎.当用户提交一个query.搜索引擎会召回非常多文档,然后依据文档与query以及用户的相关程度对 ...

  5. 设计模式初探3——装饰者模式(Decorator Pattern)

    装饰者模式:动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 适用范围: 1. 须要扩展一个类的功能.或给一个类加入附加职责. 2. 须要动态的给一个对象加入功能,这些功 ...

  6. hdu 4857 逃生 拓扑排序+PQ,剥层分析

    pid=4857">hdu4857 逃生 题目是求拓扑排序,但不是依照字典序最小输出,而是要使较小的数排在最前面. 一開始的错误思路:给每一个点确定一个优先级(该点所能到达的最小的点) ...

  7. 转载:PHP时间戳 strtotime()使用方法和技巧

    在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了 获取指定的年月日转化为时间戳:pHP时间戳函数获取指定日期的unix时间戳 strt ...

  8. Prototype Pattern 原型模式

    7.6 原型模式总结 原型模式作为一种快速创建大量相同或相似对象的方式,在软件开发中应用较为广泛,很多软件提供的复制(Ctrl + C)和粘贴(Ctrl + V)操作就是原型模式的典型应用,下面对该模 ...

  9. 如何处理 Windows Phone 8 动态砖变成黑白砖

    原文:如何处理 Windows Phone 8 动态砖变成黑白砖 ? 问题的来龙去脉 我的 Windows Phone 8 动态砖变成黑白砖,所有图示和文字变成黑白,该如何处理? ? 问题的发生原因 ...

  10. RH033读书笔记(6)-Lab 7 Standard I/O and Pipes

    Lab 7 Standard I/O and Pipes 1. [student@stationX ~]$ cat /proc/cpuinfo /proc/meminfo 2. [student@st ...