【iOS】加密算法整理
来源:互联网 发布:pandora 16.02 软件源 编辑:程序博客网 时间:2024/06/05 01:57
1、MD5:
- (NSString *)getMd5_32Bit { const char *cStr = [self UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, strlen(cStr), digest); NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [result appendFormat:@"%02x", digest[i]]; return result;}
2、AED:
- (NSData *)AES256EncryptWithKey:(NSString *)key { char keyPtr[kCCKeySizeAES256+1]; bzero(keyPtr, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [self length]; size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding|kCCOptionECBMode, keyPtr, kCCBlockSizeAES128, NULL, [self bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; } free(buffer); return nil;}- (NSData *)AES256DecryptWithKey:(NSString *)key { char keyPtr[kCCKeySizeAES256+1]; bzero(keyPtr, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [self length]; size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesDecrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionECBMode|kCCOptionPKCS7Padding, keyPtr, kCCBlockSizeAES128, NULL, [self bytes], dataLength, buffer, bufferSize, &numBytesDecrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted]; } free(buffer); return nil;}
3、DES
+ (NSString *)TripleDES:(NSString *)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt withKey:(NSString *)DESKEY { const void *vPlainText; size_t plainTextBufferSize; if (encryptOrDecrypt == kCCDecrypt) { NSData *EncryptData = [GTMBase64 decodeData:[plainText dataUsingEncoding:NSUTF8StringEncoding]]; plainTextBufferSize = [EncryptData length]; vPlainText = [EncryptData bytes]; } else { NSData *data = [plainText dataUsingEncoding:NSUTF8StringEncoding]; plainTextBufferSize = [data length]; vPlainText = (const void *)[data bytes]; } CCCryptorStatus ccStatus; uint8_t *bufferPtr = NULL; size_t bufferPtrSize = 0; size_t moveBytes = 0; bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1); bufferPtr = malloc(bufferPtrSize * sizeof(uint8_t)); memset((void *)bufferPtr, 0x0, bufferPtrSize); const void *vkey = (const void *)[DESKEY UTF8String]; ccStatus = CCCrypt(encryptOrDecrypt, kCCAlgorithm3DES, kCCOptionECBMode|kCCOptionPKCS7Padding, vkey, kCCKeySize3DES, nil, vPlainText, plainTextBufferSize, (void *)bufferPtr, bufferPtrSize, &moveBytes); NSString *result; if (encryptOrDecrypt == kCCDecrypt) { result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)moveBytes] encoding:NSUTF8StringEncoding]; } else { NSData *data = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger) moveBytes]; result = [GTMBase64 stringByEncodingData:data]; } return result;}
注意引入头文件:#import <CommonCrypto/CommonCrypto.h>
0 0
- 【iOS】加密算法整理
- 加密算法整理
- 常见加密算法整理
- 加密算法库搜集整理
- 部分加密算法介绍网站整理
- iOS MD5加密算法
- iOS MD5 加密算法。
- ios的MD5加密算法
- iOS 加密算法的使用
- IOS常用加密算法
- iOS常用的加密算法
- ios 常用加密算法
- IOS常用加密算法
- [IOS]MD5加密算法
- OC IOS SHA1加密算法
- iOS MD5加密算法
- iOS MD5加密算法
- iOS MD5加密算法
- 反弹shell的十种姿势
- UNDO_RETENTION作用
- Programming Language :: Python :: Understanding Twisted Deferred
- Linux音视频(流媒体)
- 在eclipse启动Tomcat服务,但是网页输入http://localhost:8080/报404错误的解决方法
- 【iOS】加密算法整理
- metaq初级1--安装配置
- 响应式设计
- CUDA 7.5 + VS2010安装使用
- 备忘:win10下共享(samba)给CentOS-6
- 两种Android判断view是否部分被遮挡(或者移出屏幕)的方法
- Docker在linux中的快速安装
- linux中export、ofile、bashrc、bash_profile各种环境变量文件
- 求菲波那切数列数列第n项三种方法小结