您的位置:首页 > 编程语言 > Java开发

OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果同样

2017-07-10 12:04 543 查看

问题说明:

近期用到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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: