您的位置:首页 > 移动开发 > IOS开发

c# 跟IOS DES 加密问题

2016-03-09 11:08 567 查看
c# 跟IOS DES 加密问题
一、ios 加密代码
+(NSString *) encryptUseDES:(NSString *)clearText key:(NSString *)key
{
NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
unsigned char buffer[1024];
memset(buffer, 0, sizeof(char));
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding| kCCOptionECBMode,
[key UTF8String],
kCCKeySizeDES,
nil,
[data bytes],
[data length],
buffer,
1024,
&numBytesEncrypted);

NSString* plainText = nil;
if (cryptStatus == kCCSuccess) {
NSData *dataTemp = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
plainText = [GTMBase64 stringByEncodingData:dataTemp];
}else{
NSLog(@"DES加密失败");
}
return plainText;
}

二、c#加密代码
public string EncryptData(string data)
{
byte[] keyBytes = Convert.FromBase64String(Key1);
byte[] keyIV = Convert.FromBase64String(Key2);
byte[] inputByteArray = Encoding.UTF8.GetBytes(data);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());

}
再附上安卓的代码 public String EncryptData(String Data) throws Exception {
byte[] keyBytes = new BASE64Decoder().decodeBuffer(Key1);//ASCIIEncoding.ASCII.GetBytes(key);
byte[] keyIV = new BASE64Decoder().decodeBuffer(Key2); //将12位密钥转为8位
IvParameterSpec zeroIv = new IvParameterSpec(keyIV);
//获得秘钥
SecretKeySpec key = new SecretKeySpec(keyBytes, "DES");
//实例化加密类Cipher 加密方式/工作模式/填充
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
byte[] encryptedData = cipher.doFinal(Data.getBytes("UTF-8"));
String encode = new String(Base64.encode(encryptedData, Base64.DEFAULT),"UTF-8");
return encode;
}

NSString *ciphertext = nil;
NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSUInteger dataLength = [textData length];
unsigned char buffer[1024];
memset(buffer, 0, sizeof(char));
size_t numBytesEncrypted = 0;
NSData* key1Data = [key1 dataUsingEncoding:NSUTF8StringEncoding];
NSString* key1Base64 = [key1Data base64EncodedStringWithOptions:0];
NSData* key2Data = [key2 dataUsingEncoding:NSUTF8StringEncoding];
NSString* key2Base64 = [key2Data base64EncodedStringWithOptions:0];

CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,kCCOptionPKCS7Padding|kCCOptionECBMode,(__bridge const void *)(key1Base64),kCCKeySizeDES,(__bridge const void *)(key2Base64),[textData bytes], dataLength,buffer, 1024,&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
ciphertext = [GTMBase64 stringByEncodingData:data];
}base64编码了以后还是不对啊

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  加密