ios开发过程中的相关加密算法
2015-08-22 15:34
387 查看
自己试一下吧 常见的md5 sha1 base64 等常见的算法均有 后续有信的研究再做扩充
[objc] view
plain copy
//
// NSString+Help.h
//
// Created by Mac10.9.4 on 14-9-21.
// Copyright (c) 2014年 zn. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface NSString (Help)
/**
* 命令行测试命令
*
* MD5
* $ echo -n abc | openssl md5
* SHA1
* $ echo -n abc | openssl sha1
* SHA256
* $ echo -n abc | openssl sha -sha256
* SHA512
* $ echo -n abc | openssl sha -sha512
* BASE64编码(abc)
* $ echo -n abc | base64
*
* BASE64解码(YWJj,abc的编码)
* $ echo -n YWJj | base64 -D
*/
/**
* 返回md5加密后的字符串
*/
@property (nonatomic, readonly) NSString *md5String;
/**
* 返回sha1遍吗后的字符串
*/
@property (nonatomic, readonly) NSString *sha1String;
/**
* 返回sha256遍吗后的字符串
*/
@property (nonatomic, readonly) NSString *sha256String;
/**
* 返回sha512遍吗后的字符串
*/
@property (nonatomic, readonly) NSString *sha512String;
/**
* 返回Base64遍吗后的字符串
*/
@property (nonatomic, readonly) NSString *base64Encode;
/**
* 返回Base64解码后的字符串
*/
@property (nonatomic, readonly) NSString *base64Decode;
/**
* 计算一行字的size
*
* @param fount fount
*
* @return 计算好的 size
*/
- (CGSize)sizeWithStingFount:(UIFont *)fount;
/**
* 计算字符串的size
*
* @param fount fount
* @param maxSize 字符串可以占据的最大的size
*
* @return size
*
* @exception 计算好的 size
*/
- (CGSize)sizeWithStingFount:(UIFont *)fount withMaxSize:(CGSize)maxSize;
@end
[objc] view
plain copy
// NSString+Help.m
//
// Created by Mac10.9.4 on 14-9-21.
// Copyright (c) 2014年 zn. All rights reserved.
//
#import "NSString+Help.h"
#import <CommonCrypto/CommonDigest.h>
@implementation NSString (Help)
/**
* 返回md5加密后的字符串
*/
- (NSString *)md5String
{
const charchar *str = self.UTF8String;
int length = (int)strlen(str);
unsigned char bytes[CC_MD5_DIGEST_LENGTH];
CC_MD5(str, length, bytes);
return [self stringFromBytes:bytes length:CC_MD5_DIGEST_LENGTH];
}
/**
* 返回sha1遍吗后的字符串
*/
- (NSString *)sha1String
{
const charchar *str = self.UTF8String;
int length = (int)strlen(str);
unsigned char bytes[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(str, length, bytes);
return [self stringFromBytes:bytes length:CC_SHA1_DIGEST_LENGTH];
}
/**
* 返回sha256遍吗后的字符串
*/
- (NSString *)sha256String
{
const charchar *str = self.UTF8String;
int length = (int)strlen(str);
unsigned char bytes[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(str, length, bytes);
return [self stringFromBytes:bytes length:CC_SHA256_DIGEST_LENGTH];
}
/**
* 返回sha512遍吗后的字符串
*/
- (NSString *)sha512String
{
const charchar *str = self.UTF8String;
int length = (int)strlen(str);
unsigned char bytes[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(str, length, bytes);
return [self stringFromBytes:bytes length:CC_SHA512_DIGEST_LENGTH];
}
- (NSString *)stringFromBytes:(unsigned charchar *)bytes length:(int)length
{
NSMutableString *strM = [NSMutableString string];
for (int i = 0; i < length; i++) {
[strM appendFormat:@"%02x", bytes[i]];
}
return [strM copy];
}
/**
* 返回Base64遍吗后的字符串
*/
- (NSString *)base64Encode {
NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
return [data base64EncodedStringWithOptions:0];
}
/**
* 返回Base64解码后的字符串
*/
- (NSString *)base64Decode {
NSData *data = [[NSData alloc] initWithBase64EncodedString:self options:0];
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
/**
* 计算一行字的size
*
* @param fount fount
*
* @return 计算好的 size
*/
- (CGSize)sizeWithStingFount:(UIFont *)fount
{
return [self sizeWithStingFount:fount withMaxSize:CGSizeMake(MAXFLOAT, 0)];
}
/**
* 计算字符串的size
*
* @param fount fount
* @param maxSize 字符串可以占据的最大的size
*
* @return size
*
* @exception 计算好的 size
*/
- (CGSize)sizeWithStingFount:(UIFont *)fount withMaxSize:(CGSize)maxSize;
{
NSDictionary *attrs = @{NSFontAttributeName : fount};
return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}
@end
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- 加载带有手势识别器的XIB文件需注意哪些问题
- 仅需几行代码实现方便易用的状态栏指示器