什么是IOS中最好的可用数据加密算法 [英] What is best available data encryption algorithm in IOS

查看:56
本文介绍了什么是IOS中最好的可用数据加密算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用我的数据加密,然后再将其发送到服务器,是否有高度安全的双向加密算法?哪个是最适合此目的的.

i am trying to encrypt my data using before sending it to server, is there any highly secure two way encryption algorithm ? which one is best for this purpose.

推荐答案

检查一次

这里,键是字符串变量,声明为全局变量.

Here, key is string variable, declare as a global variable.

为您的代码添加顺序框架并导入

add sequrity framework for your code and import

       #import <CommonCrypto/CommonDigest.h>
       #import <CommonCrypto/CommonCryptor.h>

     - (void)viewDidLoad
       {
          [super viewDidLoad];

          key=@"Your own key";

          // encoding
          NSString *encodingString=[[self encrypt:[@"Your String"           
                                       dataUsingEncoding:NSUTF8StringEncoding]    
                                       base64EncodedString];;

          //decoding
          NSData *data=[self decrypt:[NSData dataFromBase64String:encryptString]];
          NSString *decodingString = [[NSString alloc] initWithBytes:[data bytes] length:
                                     [data length] encoding: NSASCIIStringEncoding];

     }

   - (NSData *) encrypt:(NSData *) plainText {
        return [self transform:kCCEncrypt data:plainText];
     }

   - (NSData *) decrypt:(NSData *) cipherText {
       return [self transform:kCCDecrypt data:cipherText];
     }

   - (NSData *) transform:(CCOperation) encryptOrDecrypt data:(NSData *) inputData {

        // kCCKeySizeAES128 = 16 bytes
       // CC_MD5_DIGEST_LENGTH = 16 bytes
       NSData* secretKey = [ChipperObject md5:Key];

       CCCryptorRef cryptor = NULL;
       CCCryptorStatus status = kCCSuccess;

       uint8_t iv[kCCBlockSizeAES128];
       memset((void *) iv, 0x0, (size_t) sizeof(iv));

       status = CCCryptorCreate(encryptOrDecrypt, 
                               kCCAlgorithmAES128,kCCOptionPKCS7Padding,
                              [secretKey bytes], kCCKeySizeAES128, iv, &cryptor);

      if (status != kCCSuccess) {
           return nil;
      } 

      size_t bufsize = CCCryptorGetOutputLength(cryptor, (size_t)[inputData length], 
                                                true);

      void * buf = malloc(bufsize * sizeof(uint8_t));
      memset(buf, 0x0, bufsize);

      size_t bufused = 0;
      size_t bytesTotal = 0;

      status = CCCryptorUpdate(cryptor, [inputData bytes], (size_t)[inputData length],
                         buf, bufsize, &bufused);

     if (status != kCCSuccess) {
         free(buf);
         CCCryptorRelease(cryptor);
         return nil;
      }

      bytesTotal += bufused;

      status = CCCryptorFinal(cryptor, buf + bufused, bufsize - bufused, &bufused);

      if (status != kCCSuccess) {
           free(buf);
           CCCryptorRelease(cryptor);
           return nil;
      }

       bytesTotal += bufused;

       CCCryptorRelease(cryptor);

      return [NSData dataWithBytesNoCopy:buf length:bytesTotal];

}

这篇关于什么是IOS中最好的可用数据加密算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆