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编码了以后还是不对啊 |
相关文章推荐
- 用ASP编写的加密和解密类
- VBS脚本加密/解密VBS脚本(简易免杀版1.1)
- BAT加密工具 EncryBat 非编译型bat批处理加密方案与代码
- C#对称加密(AES加密)每次生成的结果都不同的实现思路和代码实例
- SQLServer 2008中的代码安全(一) 存储过程加密与安全上下文
- 实例讲解SQL Server加密功能
- C#实现对文件进行加密解密的方法
- C#实现数据包加密与解密实例详解
- C#最简单的字符串加密解密方法
- C#加密app.config中连接字符串的方法
- C#使用伪随机数实现加密用户密码的方法
- asp MD5加密方式使用建议
- C#对称加密与非对称加密实例
- 浅谈C#中Md5和Sha1两种加密方式
- 基于C#对用户密码使用MD5加密与解密
- vbs shellcode转换escape加密
- PHP加密解密字符串汇总
- PHP加密解密实例分析
- php结合md5实现的加密解密方法
- c#通过DES加密算法加密大文件的方法