简单讲解iOS应用开发中的MD5加密的相关使用_IOS

一、简单说明

1.说明

在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题。

如:可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据

“青花瓷”软件

因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交

 

2.常见的加密算法

MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES

3.加密算法的选择

一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密

 

二、MD5

1.简单说明

MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”

效果:对输入信息生成唯一的128位散列值(32个字符)

 

2.MD5的特点

(1)输入两个不同的明文不会得到相同的输出值

(2)根据输出值,不能得到原始的明文,即其过程不可逆

 

3.MD5的应用

由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用

主要运用在数字签名、文件完整性验证以及口令加密等方面

4.MD5破解

MD5解密网站:http://www.cmd5.com

5.MD5改进

现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度

加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5

先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序

总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文

代码示例:

复制代码 代码如下:

#import "HMViewController.h"
#import "NSString+Hash.h"

#define Salt @"fsdhjkfhjksdhjkfjhkd546783765"

@interface HMViewController ()

@end

@implementation HMViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    [self digest:@"123"]; //
    [self digest:@"abc"];
    [self digest:@"456"];
}

/**
 *  直接用MD5加密
 */
- (NSString *)digest:(NSString *)str
{
    NSString *anwen = [str md5String];
    NSLog(@"%@ - %@", str, anwen);
    return anwen;
}

/**
 *  加盐
 */
- (NSString *)digest2:(NSString *)str
{
    str = [str stringByAppendingString:Salt];
   
    NSString *anwen = [str md5String];
    NSLog(@"%@ - %@", str, anwen);
    return anwen;
}

/**
 *  多次MD5
 */
- (NSString *)digest3:(NSString *)str
{
    NSString *anwen = [str md5String];
   
    anwen = [anwen md5String];
   
    NSLog(@"%@ - %@", str, anwen);
    return anwen;
}

/**
 *  先加密, 后乱序
 */
- (NSString *)digest4:(NSString *)str
{
    NSString *anwen = [str md5String];
   
    // 注册:  123 ----  2CB962AC59075B964B07152D234B7020
   
    // 登录: 123 --- 202CB962AC59075B964B07152D234B70
   
    NSString *header = [anwen substringToIndex:2];
    NSString *footer = [anwen substringFromIndex:2];
    anwen = [footer stringByAppendingString:header];
   
    NSLog(@"%@ - %@", str, anwen);
    return anwen;
}
@end

(1)直接使用MD5加密(去MD5解密网站即可破解)

(2)使用加盐(通过MD5解密之后,很容易发现规律)

(3)多次MD5加密(使用MD5解密之后,发现还是密文,那就接着MD5解密)

(4)先加密,后乱序(破解难度增加)

三、注册和验证的数据处理过程

1.提交隐私数据的安全过程 – 注册

2.提交隐私数据的安全过程 – 登录

时间: 2025-01-21 00:21:51

简单讲解iOS应用开发中的MD5加密的相关使用_IOS的相关文章

举例讲解iOS应用开发中hitTest触摸事件的编写方法_IOS

 hitTest:withEvet  调用过程 比如如果是当前的View A, 还有一个viewB 如果不重写 hitTest 方法,那么 系统默认是先调用viewA的hitest 方法,然后再调用viewB的htest方法. 系统的调用过程,跟下面的重写hitest的方法是一模一样的. 复制代码 代码如下: -(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event  {      if ([self pointInside:poin

深入解析iOS应用开发中九宫格视图布局的相关计算方法_IOS

来看一个简单的例子: 复制代码 代码如下: /*  * 总列数  */ NSUInteger totalloc = 3; /*  * View的宽高  */ CGFloat shopW = 80; CGFloat shopH = 100; /*  * 每个View之间的间隔  */ CGFloat margin = (self.view.frame.size.width - totalloc * shopW) / (totalloc + 1); /*  * View的总个数  */ NSUInt

举例讲解iOS应用开发中对设计模式中的策略模式的使用_IOS

策略模式是一种常见的软件设计模式,这里简单得介绍一下策略模式并用IOS简单实现一下. 所谓的策略模式,顾名思义是要采用不同的策略的.一般来说,在不同的情况下,处理某一个问题的方法也不一样.比如说对字符串的排序和对数字的排序,虽然用的都是快排,但是显然不可能使用一段通用的代码.有人说java里面的compareTo可以做到,但如果考虑这么一个问题:同样是出门旅行,老年人身体虚弱,需要大量的休息,而孩子则是精力充沛,希望玩到更多的景点.如何在同一模式下表达以上信息.采用合理的设计模式进行封装而不是大

简单掌握iOS应用开发中sandbox沙盒的使用_IOS

一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox). 每个应用都有属于自己的存储空间,即沙盒. 应用只能访问自己的沙盒,不可访问其他区域. 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上可以使用,必须将数据库文件拷贝至沙盒中.二.打开沙盒路径 1.如果不知道沙盒路径,可

实例讲解iOS应用开发中使用UITableView创建自定义表格_IOS

一.带索引目录的表视图 1.效果图 2.数据源 本想获取通讯录中得名字,但为了用模拟器调试方便,就写死了数据,所以也只写了部分字母,总之有那么点意思就成 复制代码 代码如下: @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> {     NSArray *sectionTitles; // 每个分区的标题     NSArray *contentsArray; // 每行的内容 } /** @brie

iOS App开发中的UIStackView堆叠视图使用教程_IOS

一.引言随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard和一些第三方的框架,对于创建约束来说,已经十分方便,但是对于一些动态的线性布局的视图,我们需要手动添加的约束不仅非常多,而且如果我们需要插入或者移除其中的一些UI元素的时候,我们又要做大量的修改约束的工作,UIStackView正好可以解决这样的问题. 二.在storyBoard上初识StackViewUIStackView是一个管理一组堆叠视图的控制器

iOS App开发中的UISegmentedControl分段组件用法总结_IOS

UISegmentedControl分段控件代替了桌面OS上的单选按钮.不过它的选项个数非常有限,因为你的IOS设备屏幕有限.当我们需要使用选项非常少的单选按钮时它很合适.一.创建 复制代码 代码如下: UISegmentedControl* mySegmentedControl = [[UISegmentedControl alloc]initWithItems:nil]; 是不是很奇怪没有指定位置和大小呢?没错,我确实在他的类声明里只找到 initWithItems 而未找到 initWit

详解iOS应用开发中Core Data数据存储的使用_IOS

1.如果想创建一个带有coreData的程序,要在项目初始化的时候勾选中  2.创建完成之后,会发现在AppDelegate里多出了几个属性,和2个方法 复制代码 代码如下: <span style="font-size:18px;">    @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;  @property (readonly, strong, n

iOS App开发中使用及自定义UITableViewCell的教程_IOS

UITableView用来以表格的形式显示数据.关于UITableView,我们应该注意: (1)UITableView用来显示表格的可见部分,UITableViewCell用来显示表格的一行. (2)UITableView并不负责存储表格中的数据,而是仅仅存储足够的数据使得可以画出当前可见部分. (3)UITableView从UITableViewDelegate协议获取配置信息,从UITableViewDataSource协议获得数据信息. (4)所有的UITableView实现时实际上只有