MD5加密,Base64加密/解密,AES加密/解密
1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示。
2.使用前的配置及注意事项:
(1) 在build phases中的GTMBase64.m需要设置 -fno-objc-arc
(2) 在#import "NSString+Base64.m”文件中导入 #import <Foundation/Foundation.h>
(3)在#import "GTMBase64.m”文件中添加 #import <CommonCrypto/CommonCrypto.h>
3. CusMD5.h 和 CusMD5.m 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #import <Foundation/Foundation.h> @interface CusMD5 : NSObject + ( NSString *)md5String:( NSString *)str; @end #import "CusMD5.h" #import <CommonCrypto/CommonDigest.h> @implementation CusMD5 + ( NSString *)md5String:( NSString *)str { const char *original_str = [str UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(original_str, strlen(original_str), result); NSMutableString *hash = [ NSMutableString string]; for ( int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [hash appendFormat:@ "%02X" , result[i]]; return [hash lowercaseString]; } @end |
---> MD5只能称为一种不可逆的加密算法,只能用作一些检验过程,不能恢复其原文。
4. 基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #import "ViewController.h" #import "CusMD5.h" #import "GTMBase64.h" #import "AESCrypt.h" @interface ViewController () @end @implementation ViewController - ( void )viewDidLoad { [ super viewDidLoad]; //要加密的字符串 NSString *strForEn = @ "需要加密字符串" ; //md5加密 NSString *strEnRes = [CusMD5 md5String:strForEn]; NSLog (@ "md5 加密: %@" ,strEnRes); //base64加密 NSData *dataEn = [strForEn dataUsingEncoding: NSUTF8StringEncoding ]; NSData *dataEnRes = [GTMBase64 encodeData:dataEn]; //把加密结果转成string NSString *base64EnRes = [[ NSString alloc] initWithData:dataEnRes encoding: NSUTF8StringEncoding ]; NSLog (@ "base64加密: %@" ,base64EnRes); //base64解密 NSData *resDeBase64 = [GTMBase64 decodeData:dataEnRes]; NSString *strDeBase64 = [[ NSString alloc] initWithData:resDeBase64 encoding: NSUTF8StringEncoding ]; NSLog (@ "base64解密: %@" ,strDeBase64); //aes 加密 NSString *strAESEnRes = [AESCrypt encrypt:strForEn password:@ "secret" ]; NSLog (@ "aes 加密: %@" ,strAESEnRes); //aes 解密 NSString *strAESDeRes = [AESCrypt decrypt:strAESEnRes password:@ "secret" ]; NSLog (@ "aes 解密: %@" ,strAESDeRes); } - ( void )didReceiveMemoryWarning { [ super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~