本文主要是介绍OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果相同,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题说明:
最近用到DES加密,并且要与java的Cipher类加密的结果保持一致。没研究过java的Cliper,但工作中Cipher根据DES/CBC/PKCS5Padding加密方式生成了一个字符串。比较后发现,此字符串与将OC加密生成的NSData直接用字符串格式化([NSString stringWithFormat:@"%@",data])相同。所以就先这么用了。
代码如下:
#import "CommonCrypto/CommonCryptor.h"
+ (NSString *)encryptUseDES:(NSString *)plainText andKey:(NSString *)authKey andIv:(NSString *)authIv{const void *iv = (const void *) [authIv UTF8String];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,[authKey UTF8String],kCCKeySizeDES,iv,[textData bytes],dataLength,buffer,1024,&numBytesEncrypted);if (cryptStatus == kCCSuccess) {NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];NSString *oriStr = [NSString stringWithFormat:@"%@",data];NSCharacterSet *cSet = [NSCharacterSet characterSetWithCharactersInString:@"< >"];ciphertext = [[oriStr componentsSeparatedByCharactersInSet:cSet] componentsJoinedByString:@""];}return ciphertext;
}
这篇关于OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果相同的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!