小工具      在线工具  汉语词典  css  js  c++  java

一.    MD5加密的全称是Message Digest Algorithm 5,翻译过来就是“消息摘要算法第五版”

MD5加密是最常用的加密方法之一。它使用相应的函数从字符串生成 32 位混合字母数字代码。生成输入信息的唯一 128 位哈希值(32 个字符)

MD5生成固定的128bit,即0和1的128个二进制位,在实际应用开发中,通常以十六进制输出,所以正好是32位十六进制。说白了就是32个十六进制数字。系统编号。

MD5的主要特点是不可逆性。相同数据的MD5值肯定是相同的,但不同数据的MD5值不同(不是绝对的,但基本不可能)。

MD5是一种摘要算法,主要用于认证。它利用自身的优势(不可逆性、低冲突率)来解决公共网络中的密钥交换和认证问题。

MD5相当于有损压缩,在计算过程中会丢失原文中的一些信息。

MD5算法还具有以下性质

  • 可压缩性:对于任意长度的数据,计算出的MD5值的长度是固定的。
  • 用于计算:很容易从原始数据计算出MD5值
  • 防修改:如果播放器数据发生改变,即使只修改一个字节,得到的MD5值也会有很大差异。
  • 防冲突性弱:给定原始数据及其MD5值,很难找到具有相同MD5值的数据。
  • 防撞力强;找到两个不同的数据使得它们的MD5值相等是非常困难的。

  • MD5加密无法解密,但是网上有一些程序解析MD5,相当于一个大数据库。通过匹配MD5可以找到原始密码。因此,只要在加密字符串前面添加一些字母数字符号或者进行多次MD5加密,结果一般是无法解析的。

MD5的应用

由于MD5加密算法安全、免费,因此MD5加密算法得到了广泛的应用。大多数登录功能在向后端提交密码时都使用此算法。

谨防:

  1. MD5加密数是16位还是32位(大部分是32位),请务必与后端开发者同意。将 32 位转换为 16 位。
  2. http://www.cmd5.com/
  3. 苹果封装了MD5加密算法,使用起来非常方便。导入头文件。#import<CommonCrypto/CommonDigest.h>

  4. MD5加密算法

    - (NSString *) md5:(NSString *) input {
    const char *cStr = [input UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call
    
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
    [output appendFormat:@"%02x", digest[i]];
    
    return output;
    }
    2.Base64加密

  1. Base64简单说明 
    描述:Base64可以成为密码学的基石,非常重要 
    特点:可以讲任意的二进制数据进行Base64编码 
    结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件 
    65字符:A~Z a~z 0~9 + / = 
    对文件进行base64编码后文件数据的变化:编码后的数据约等于编码前数据的三分之四,会大三分之一左右
  2. 命令行进行Base64编码和解码 
    编码:base64 123.png -o 123.txt 
    解码:base64 123.txt -o test.png -D
  3. Base64编码原理 
    1)将所有的字符转化为ASCII码; 
    2)将ASCII码转化成8位二进制; 
    3)将二进制3个规程一组(不足三个在后边补0)共24位,再拆分成4组,每组6位; 
    4)统一在6位二进制前补两个0凑足8位; 
    5)将补0后的二进制转换成十进制 
    6)从Base64编码表获取十进制对应的Base64编码;
  4. 处理过程说明 
    a.转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区域,先来的byte占高位。 
    b.数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。 
    c.不断进行。知道全部输入数据转换完成 
    d.如果最后剩下两个输入数据。在编码结果后加一个“=” 
    e.如果最后剩下一个数据,在编码结果后加2个“=” 
    f.如果没有剩下任何数据,就什么都不要加,这样才可以保资料还原的正确性
  5. iOS实现 
    a. 说明:从iOS7.0开始,苹果就提供了base64的编码和解码支持 ,如果是老项目还能看到Base64编码和解码的第三方框架如果不支持iOS7.0请替换 
    b.相关代码
  6. 字符串的Base64加密和解密
//给定一个字符串,对该字符串进行Base64编码,然后返回编码后的结果

    -(NSString *)base64EncodeString:(NSString *)string
    {
        //1.先把字符串转换为二进制数据

        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

        //2.对二进制数据进行base64编码,返回编码后的字符串

        return [data base64EncodedStringWithOptions:0];
    }

    //对base64编码后的字符串进行解码

    -(NSString *)base64DecodeString:(NSString *)string

    {

        //1.将base64编码后的字符串『解码』为二进制数据

        NSData *data = [[NSData alloc]initWithBase64EncodedString:string options:0];

        //2.把二进制数据转换为字符串返回

        return [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    }
7.使用base64加密和解密数据
+ (NSString*)encodeBase64Data:(NSData *)data {  
    data = [GTMBase64 encodeData:data];   
    NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];  
    return base64String;  
}  
  
+ (NSString*)decodeBase64Data:(NSData *)data {  
    data = [GTMBase64 decodeData:data];   
    NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];  
    return base64String;  
}  




. . .

相关推荐

额外说明

Springboot-与Rabbitmq集成的Confirm和Return详解

文章目录 前言 为什么会有Confirm Springboot 整合 Mq 实现 Confirm 监听机制 依赖引入 增加配置文件,设定连接信息 配置队列、交换机,以及对其进行绑定 编写mq消息发送服务 编写消息发送接口 启动项目进行测试 正常测试 异常

额外说明

开发中常用性能指标总结

TPS TPS Transactions Per Second,也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。 QPS QPS

额外说明

如何合理设置JVM内存分配比例

jvm内存大小的设置可以参照Java Performance里面推荐公式来进行设置。 解释说明 java整个堆大小设置:Xmx和Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍。 永久代PermSize和MaxPermS

额外说明

PostgreSQL 名称解释 xyz bookindex

X xid,对象标识符类型 xmax,系统列 xmin,系统列 XML,XML类型 XML export,将表映射到 XML XML option,创建XML值,语句行为 xml2,xml2 xmlagg,xmlagg,聚集函数 xmlbinary配置参

额外说明

万物皆有的算法日记|第二天

笔者自述: 一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结,因为后半年也该找实习了,所以每日的算法题要进行恶补,勤能补

额外说明

Flutter移动应用开发实战——异常

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

如何高效快速地找到满意的工作?

个人简介 -个人主页: 前端杂货铺 -‍♂️学习方向: 主攻前端方向,也会涉及到服务端 -个人状态: 在校大学生一枚,已拿 offer(秋招) -推荐学习:-前端面试宝典 -Vue2 -Vue3 -Vue2&Vue3项目实战 -Node.js 文章目录

额外说明

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《9》

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《1》:论文源地址,克隆MXNet版本的源码,安装环境与测试,以及对下载的源码的每个目录做什么用的,做个解释。 MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《

额外说明

Spring Boot基础学习笔记10:配置国际化页面

文章目录 零、学习目标 一、使用Thymeleaf配置国际化页面 (一)创建Spring Boot项目 - ThymeleafI18N (二)编写多语言国际化配置文件 1、在resources下创建i18n目录 2、在i18n目录里创建login.pro

额外说明

解决缺少vcomp140.dll文件打不开应用程序问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个vcomp140.dll文件进行安装(前提是找到适合的版本),

ads via 小工具