数据存储原则

任何应用不能在本地直接存储与安全相关的用户信息

任何应用不能向服务器传输与安全相关的而用户信息


常用的加密算法:

MD5:不可逆的算法,用一段数据每次加密后都是一样的

SHA-1:美国国家安全局设计并使用



MD5算法的实现

需要包含头文件<CommonCrypto/CommonDigest.h>

步骤:

1)将待加密OC字符串转化为C语言字符串

2)使用CC_MD5()函数将待加密C语言字符串加密,获得加密后的数据

3)将加密后的数据,转化为OC字符串

注意:加密后的数据,每一个字节的值以2位16进制表示的字符串形式作为结果


通常将字符串加密的方法封装在NSString的分类中,如:

@implementationNSString(MD5Coding)-(NSSting*)MD5{constchar*cStr=self.UTF8String;unsignedchardigest[CC_MD5_DIGEST_LENGTH];CC_MD5(cStr,strlen(cStr),digest);NSMutableString*result=[NSMutableStringstringWithCapacity:CC_MD5_DIGEST_LENGTH*2];for(inti=0;i<CC_MD5_DIGEST_LENGTH;i++){[resultappendFormat:@"%02x",digest[i]];}returnresult;}@end


SHA-1算法加密

使用SHA-1算法加密的步骤和MD5基本类似,使用CC_SHA1()函数代替CC_MD5()函数

@implementationNSString(SHA1Coding)-(NSSting*)SHA1{constchar*cStr=self.UTF8String;NSData*data=[NSDatadataWithBytes:cStrlength:self.length];unsignedchardigest[CC_SHA1_DIGEST_LENGTH];CC_SHA1(data.bytes,data.length,digest);NSMutableString*result=[NSMutableStringstringWithCapacity:CC_SHA1_DIGEST_LENGTH*2];for(inti=0;i<CC_SHA1_DIGEST_LENGTH;i++){[resultappendFormat:@"%02x",digest[i]];}returnresult;}@end


MD5的应用

这两种算法中,MD5应用最为广泛

1)本地存储数据时,如密码等私密信息存储在偏好设置中,存储MD5加密后的

2)缓存文件(如图片)存储在缓存文件下,将对应的URL进行MD5加密后作为名字

...