iOS接口参数DES加密处理,最后附有demo下载地址
应项目需求最近做了一下接口参数加密处理,开始搜了几种加密方式发现和Java后台加密解密内容不一致,最后选择了用DES加密方式,不废话直接上代码
//加密 const Byte iv[] = {1,2,3,4,5,6,7,8}; +(NSString *)encryptUseDES:(NSString *)plainText key:(NSString *)key { NSString *ciphertext = nil; NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger dataLength = [textData length]; unsigned char buffer[1024]; memset(buffer, 0, sizeof(char)); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [textData bytes], dataLength, buffer, 1024, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted]; ciphertext = [GTMBase64 stringByEncodingData:data]; } return ciphertext; }
//解密 +(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key { NSString *plaintext = nil; NSData *cipherdata = [GTMBase64 decodeString:cipherText]; unsigned char buffer[1024]; memset(buffer, 0, sizeof(char)); size_t numBytesDecrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [cipherdata bytes], [cipherdata length], buffer, 1024, &numBytesDecrypted); if(cryptStatus == kCCSuccess) { NSData *plaindata = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted]; plaintext = [[NSString alloc]initWithData:plaindata encoding:NSUTF8StringEncoding]; } return plaintext; }
demo下载地址 https://github.com/zk1947/DesDemo