java ios 3des_Java中的3DES结果与3DES iOS版本产生的结果不同

我真的真的..真的需要帮助.........

-更新-

我需要帮助,因为与iOS 3DES函数相比,我的java函数给我带来了不同的结果。我从ios和java都发布了代码;当指定的明文为“

tutor.1”且MD5密钥为“ spO13 + QLZCRAe93pIXMXLg ==“(显然,MD5两者相同)时,将返回结果。

JAVA 3DES (简短)

public static String encrypt(String plaintext, String enctoken){

if(enctoken == null)

enctoken = "sfdjf48mdfdf3054";

String encrypted = null;

byte[] plaintextByte = EncodingUtils.getBytes(plaintext,"UTF-8");

byte[] hash = Connessione.md5(enctoken);

Log.i("ENCRYPT", "MD5: "+Base64.encodeToString(hash, 0));

try {

Cipher cipher = Cipher.getInstance("DESEDE/ECB/PKCS5Padding");

SecretKeySpec myKey = new SecretKeySpec(hash,"DESede");

cipher.init(Cipher.ENCRYPT_MODE, myKey);

try {

byte[] encryptedPlainText = cipher.doFinal(plaintextByte);

encrypted = Base64.encodeToString(encryptedPlainText, 0);

Log.i("ENCRYPT", "Pwd encrypted: "+encrypted);

return encrypted;

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return "";

}

结果: R4mXAaHcFxM =

iOS 3DES-再次更新

// key value in parameters is MD5 value! It is the same for both version

+ (NSString *) encrypt:(NSString *) dataToEncrypt withKey:(NSString*) key{

NSData *data = [dataToEncrypt dataUsingEncoding:NSUTF8StringEncoding];

NSData *mData = [key dataUsingEncoding:NSUTF8StringEncoding];

CCCryptorStatus ccStatus = kCCSuccess;

// Begin to calculate bytesNeeded....

size_t bytesNeeded = 0;

ccStatus = CCCrypt(kCCEncrypt,

kCCAlgorithm3DES,

kCCOptionECBMode | kCCOptionPKCS7Padding,

[mData bytes],

[mData length],

nil,

[data bytes],

[data length],

NULL,

0,

&bytesNeeded);

if(kCCBufferTooSmall != ccStatus){

NSLog(@"Here it must return BUFFER TOO SMALL !!");

return nil;

}

// .....End

// Now i do the real Crypting

char* cypherBytes = malloc(bytesNeeded);

size_t bufferLength = bytesNeeded;

if(NULL == cypherBytes)

NSLog(@"cypherBytes NULL");

ccStatus = CCCrypt(kCCEncrypt,

kCCAlgorithm3DES,

kCCOptionECBMode | kCCOptionPKCS7Padding,

[mData bytes],

[mData length],

nil,

[data bytes],

[data length],

cypherBytes,

bufferLength,

&bytesNeeded);

if(kCCSuccess != ccStatus){

NSLog(@"kCCSuccess NO!");

return nil;

}

return [Base64 encode:[NSData dataWithBytes:cypherBytes length:bufferLength]];

}

结果: YBAva5J2khY =

我需要iOS版本返回与Java版本相同的结果。

我在这里找到了Base64类:http : //www.imthi.com/blog/programming/iphone-sdk-

base64-encode-decode.php

我做错了什么?

感谢您的帮助和时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值