小工具      在线工具  汉语词典  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. MD5加密区分大小写,必须在后端同意的情况下使用。

    MD5解密:

    解密网站: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;  
}  




. . .

相关推荐

额外说明

推荐的 MySQL 性能监控和调优工具

MySQL性能监控与调优工具推荐 本文将介绍一些常用的MySQL性能监控与调优工具,包括命令行工具、图形界面工具和第三方工具。通过这些工具,我们可以更好地监控MySQL的性能,找出潜在的问题并进行优化。 一、命令行工具 MySQL自带的慢查询日志 慢查询

额外说明

VS2019 C# MFC安装

C# .NET桌面程序,都不勾选 MFC 使用C++的桌面开发,默认

额外说明

阿里云监控用户手册

原文 http://www.wenwenyun.com/aliyun/wenzhang/20140823/408.html 一、概览 在概览页面中展示中系统默认提供的监控项或者用户创建的监控项、用户创建的监控点、云服务的实例数、用户设置的报警规则等。 1

额外说明

微信小程序——开源-知乎日报客户端源码学习

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

额外说明

DOM ------ tab栏切换

tab栏切换: 设计tab栏 点击相应板块显示相应信息 //css代码 *{ margin: 0; padding: 0; } body{

额外说明

go语言 使用MTP协议 通过WPD(windows portable device)读取便携式设备信息并进行文件传输

最下方有demo及源码。 背景 当手机通过 USB 连接 PC (选择文件传输,也就是MTP方式) 时,会看到设备管理器中出现便携设备这一栏,如下图: 打开我的电脑可以看到设备和驱动器中出现对应的设备,如下图: 可以发现,在设备管理器中,便携式设备有两个

额外说明

Python-Matplotlib可视化(4)——添加注释让统计图通俗易懂

Python-Matplotlib可视化(4)——添加注释让统计图通俗易懂 前言 添加标题 为坐标轴添加标签 添加文本说明 文本的对齐方式 文本边界框 添加箭头 添加图例 使用LaTex风格的符号 LaTex简介 使用LaTex符号示例 使用中文字符 系

额外说明

云计算在大数据分析中的应用与优势

文章目录 云计算在大数据分析中的应用 云计算在大数据分析中的优势 云计算在大数据分析中的示例 未来发展和拓展 结论 -欢迎来到AIGC人工智能专栏~云计算在大数据分析中的应用与优势 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒- ✨博客主页:IT·陈寒的

额外说明

华为云云耀云服务器L实例评测|Python Selenium加Chrome Driver构建UI自动化测试实践

-作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 -数年电商行业从业经验,AWS/阿里云资深使用用户,历任核心研发工程师,项目技术负责人。 -欢迎 -点赞✍评论

额外说明

Windows系统缺失找不到GameChatTranscription.dll文件解决

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个GameChatTransc

ads via 小工具