关于 iOS 加密的一些详谈

iOS 加密算法有那么几种,如 md5,sha1,AES,base64 和 rsa 等。

1. md5:

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。(引用自百度百科)

MD5加密目前来说是不可逆的。

MD5算法产生的是固定的128bit,即128个0和1的二进制位,而在实际应用开发中,通常是以16进制输出的,所以正好就是32位的16进制数,说白了也就是32个16进制的数字。

- (NSString *)md5:(NSDictionary *)paramsDict {
NSString *inString = [paramsDict stringValueForKey:@"data" defaultValue:@""];
    if (inString.length <= 0) {
        return @"";
    } else {
        const char *cStrValue = [inString UTF8String];
        //开辟一个16字节(128位:md5加密出来就是128位/bit)的空间(一个字节=8字位=8个二进制数)
        unsigned char outResult[CC_MD5_DIGEST_LENGTH];
        CC_MD5(cStrValue, strlen(cStrValue), outResult);

        //x表示十六进制,X  意思是不足两位将用0补齐,如果多余两位则不影响
        NSString *outString =
        [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
               outResult[0], outResult[1], outResult[2], outResult[3],
               outResult[4], outResult[5], outResult[6], outResult[7],
               outResult[8], outResult[9], outResult[10], outResult[11],
               outResult[12], outResult[13], outResult[14], outResult[15]];
        /*
        //方法二:
        NSMutableString *outString = [NSMutableString string];
        for (int i = 0; i < 16; i++) {
             [outString appendFormat:@"X", outResult[i]];
        }
        */
        return outString;
    }
 }

为什么是[16]呢,这是因为MD5算法最后生成的是128位,而在计算机的最小存储单位为字节,1个字节是8位,对应一个char类型,计算可得需要16个char。所以result是[16]。那么为什么输出的格式一定是%02x呢,而不是其它呢。这也是有原因的:因为约定MD5一般是以16进制的格式输出,那么其实这个问题就转换为把128个0和1以16进制来表示,每4位二进制对应一个16进制的元素,则需要32个16进制的元素,如果元素全部为0,放到char的数组中,正常是不会输出,如00001111,以%x输出,则是f,那么就会丢失0;但如果以%02x表示则输出结果是0f,正好是转换的正确结果。

2. sha1 加密

时间: 2024-08-21 08:34:01

关于 iOS 加密的一些详谈的相关文章

IOS加密 AES 256算法(EncryptAndDecrypt.h)[转载]

////EncryptAndDecrypt.h #import <Foundation/Foundation.h> @class NSString; @interface NSData (Encryption) - (NSData *)AES256EncryptWithKey:(NSData *)key; //加密 - (NSData *)AES256DecryptWithKey:(NSData *)key; //解密 - (NSString *)newStringInBase64FromDa

iOS 加密 : MD5

MD5:首先,md5不是加密. md5是摘要算法,主要是用来做认证,利用自身优势(不可逆.低碰撞率)解决公开网络中交换密钥.认证的问题, MD5相当于超损压缩,在计算过程中原文的部分信息会丢失. MD5为什么不可逆?例子: 原文:快点赞啊亲加密规则:每个字取拼音声调+笔画数,最后的结果计算乘积,为了也使得我的结果始终保持在一个限定范围内,取最后结果取其与2^14=16384的余数(随便取的,你们就当我有二进制强迫症吧)如 快 是7画,4声,也就是“特征值11”,以此类推 点9+3=12 赞16+

iOS加密:RSA

RSA: 非对称加密算法(对称加密算法在加密和解密时使用的是同一个秘钥:而非对称加密算法需要两个密钥来进行加密和解密) RSA作用:1,加密数据传输, 2,用于文件签名. 加密和加签有什么区别? 答:加密:公钥放在客户端,并使用公钥对数据进行加密,服务端拿到数据后用私钥进行解密: 加签:私钥放在客户端,并使用私钥对数据进行加签,服务端拿到数据后用公钥进行验签. 前者完全为了加密:后者主要是为了防恶意攻击,防止别人模拟我们的客户端对我们的服务器进行攻击,导致服务器瘫痪. RSA加密方式:由已知加密

RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密

最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的内容吧 很多对安全要求比较高的应用都要使用加密,加密后与后端沟通数据,这样能防止被别人截获数据包,直接把借口的参数数据暴露.我上一家公司是做P2P互联网金融的,就使用了多种加密方式,有对称的也有非对称的.最近新公司的APP也有意向使用加密,思考了一下,最成熟的解决方案就是使用RSA非对称的加密了.就

iOS 加密

比较常用的加密方法为MD5.Base64.SHA1等 Base64是开发中使用较频繁的加密算法 1.Base是使用较为频繁的编码方式: 2.可以将二进制数据转化成“字符串”: 3.编码之后的结果是由“a”~“z”,“A”~“Z”,“+”,“/”和辅助符号“=”组成: MD5加密称作“消息摘要算法第五版” 1.对输入的信息生成唯一的128位散列值(32个字符): 2.免费的,一般用在数字签名,口令加密和密码加密: SHA1是美国国家安全局设计的一套安全散列算法 1.对输入的信息生成唯一的140位散

iOS 加密的3种方法

//需要导入   #import <CommonCrypto/CommonCryptor.h> ==============MD5加密============ NSString *str = @"加密的内容"; //转换成C语言的字符串 const char *cStr=[str UTF8String]; //MD5加密的结果是128位,需要开辟一个16字节的空间 unsigned char result[16]; //调用加密函数 CC_MD5(cStr, (unsign

iOS代码加密的几种方式

众所周知的是大部分iOS代码一般不会做加密加固,因为iOS APP一般是通过AppStore发布的,而且苹果的系统难以攻破,所以在iOS里做代码加固一般是一件出力不讨好的事情.万事皆有例外,不管iOS.adr还是js,加密的目的是为了代码的安全性,虽然现在开源畅行,但是不管个人开发者还是大厂皆有保护代码安全的需求,所以iOS代码加固有了生存的土壤.下面简单介绍下iOS代码加密的几种方式. iOS代码加密的几种方式 1.字符串加密 字符串会暴露APP的很多关键信息,攻击者可以根据从界面获取的字符串

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的数据加密的时候遇到了一些问题.起初采取的方案是DES加密,老大说DES加密是对称的,网络抓包加上反编译可能会被破解,故采取RSA方式加密.RSA加密时需要公钥和私钥,客户端保存公钥加密数据,服务器保存私钥解密数据.(iOS端公钥加密私钥解密.java端公钥加密私钥解密,java端私钥加密公钥解密都容易做到,iOS不

iOS代码加密常用加密方式

在今天的面试中,被问到了iOS是采用什么进行加密解密操作的,我的回答是这样的:AES,MD5,Base 64,然后是对这几种加密算法进行了一下简单的介绍和概述和几种算法之间的不同点和优缺点.然而,收到的回答是:这些都不是iOS的加密!我顿时就无语了,这不就是iOS加密所用到的方法么?然后向面试官请教了一下:MD5是一种摘要....什么叫加密呢?加密是客户端对数据加密和服务器端采用秘钥对数据进行解密处理,为了数据的安全考虑.要说加密应该是RSA.幸亏之前有了解过RSA,只是了解的不是很彻底和清楚.