Java和Objective-C中字符编码及DES加密解密 (四)

2014-11-24 11:33:06 · 作者: · 浏览: 3
ing,keyText);

System.out.println("明文:" + plainText);

System.out.println("密钥:" + keyText);

System.out.println("密文:" + encryptedString);

System.out.println("解密后:" + decryptedString);

}

输出结果如下:

will encryptedData with UTF-8 encoding =6D696B69E8A5BFE6B8B87C7C206D696B697869796F75403132362E636F6D

did encryptedData =D72EA24833C4731FE292DE0F335D62E8C5B3C459BD72FD396819E0CE1C60B314

will decryptedData=D72EA24833C4731FE292DE0F335D62E8C5B3C459BD72FD396819E0CE1C60B314

did decryptedData with UTF-8 encoding =6D696B69E8A5BFE6B8B87C7C206D696B697869796F75403132362E636F6D

did decryptedString with UTF-8 encoding =miki西游|| 明文:miki西游|| 密钥:abcd1234

密文 Base64 编码:D72EA24833C4731FE292DE0F335D62E8C5B3C459BD72FD396819E0CE1C60B314

解密后:miki西游 will encryptedData with UTF-8 encoding=6D696B69E8A5BFE6B8B87C7C206D696B697869796F75403132362E636F6D

did encryptedData =D72EA24833C4731FE292DE0F335D62E8C5B3C459BD72FD396819E0CE1C60B314

will decryptedData =D72EA24833C4731FE292DE0F335D62E8C5B3C459BD72FD396819E0CE1C60B314

did decryptedData with UTF-8 encoding=6D696B69E8A5BFE6B8B87C7C206D696B697869796F75403132362E636F6D

did decryptedString with UTF-8 encoding =miki西游|| 明文:miki西游|| 密钥:abcd1234

密文:1y6iSDPEcx/ikt4PM11i6MWzxFm9cv05aBngzhxgsxQ=

解密后:miki西游||

这样,我们就实现了JAVA中的加密和解密。但要在客户端也实现这样的加密和解密算法才算最终完成任务。因此,我们还需要实现Objective-C中的DES加密和解密操作。

static Byte iv[8]={1,2,3,4,5,6,7,8};

加密方法encryptUseDES:key:如下

- (NSString *) encryptUseDES:(NSString *)plainText key:(NSString*)key

{

NSString *ciphertext =nil;

NSData* data=[plainTextdataUsingEncoding: NSUTF8StringEncoding];

NSLog(@"plainTextBytes with UTF-8 encoding:%@",[XYDESdataToHex:data]);

NSUInteger bufferSize=([data length] + kCCKeySizeDES) & ~(kCCKeySizeDES -1);

charbuffer[bufferSize];

memset(buffer, 0,sizeof(buffer));

size_t bufferNumBytes;

CCCryptorStatuscryptStatus = CCCrypt(kCCEncrypt,

kCCAlgorithmDES,

kCCOptionPKCS7Padding,

[keyUTF8String],

kCCKeySizeDES,

iv ,

[databytes],

[datalength],

buffer,

bufferSize,

&bufferNumBytes);

if (cryptStatus ==kCCSuccess) {

NSData *data = [NSDatadataWithBytes:buffer length:(NSUInteger)bufferNumBytes];

NSLog(@"objccipherTextBytes:%@",[XYDES dataToHex:data]);

NSLog(@"JavacipherTextBytes:%@",@"D72EA24833C4731FE9960B48DB705E7AF99AB772C6E6E19CE8F3F8EA16EE5297");

ciphertext = [GTMBase64stringByEncodingData:data];

NSLog(@"objccipherTextBase64:%@",ciphertext);

NSLog(@"JavacipherTextBase64:%@",@"1y6iSDPEcx/plgtI23Beevmat3LG5uGc6PP46hbuUpc=");

}

return ciphertext;

}

解密方法decryptUseDES:key:如下

-(NSString*) decryptUseDES:(NSString*)cipherText key:(NSStr