Iphone IOS中可用的最佳数据加密算法是什么

Iphone IOS中可用的最佳数据加密算法是什么,iphone,ios,Iphone,Ios,我试图在将数据发送到服务器之前使用加密,是否有任何高度安全的双向加密算法?哪一个最适合这个目的 公钥基础设施(PKI)为您提供了一种在两台机器之间加密数据的可靠方法。您可以试一试。公钥基础设施(PKI)为您提供了一种在两台机器之间加密数据的可靠方法。您可以尝试一下。您可以使用HTTPS,也可以使用来加密您的数据。您可以使用HTTPS,也可以使用来加密您的数据。这是我使用3des CCCrypt方法的代码,从谷歌代码中查找GTMBase64.h 这是我使用3des CCCrypt方法的代码,从Go

我试图在将数据发送到服务器之前使用加密,是否有任何高度安全的双向加密算法?哪一个最适合这个目的

公钥基础设施(PKI)为您提供了一种在两台机器之间加密数据的可靠方法。您可以试一试。

公钥基础设施(PKI)为您提供了一种在两台机器之间加密数据的可靠方法。您可以尝试一下。

您可以使用HTTPS,也可以使用来加密您的数据。

您可以使用HTTPS,也可以使用来加密您的数据。

这是我使用3des CCCrypt方法的代码,从谷歌代码中查找GTMBase64.h


这是我使用3des CCCrypt方法的代码,从Google代码中查找GTMBase64.h

检查一下

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

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

       #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];
#导入
#进口
-(无效)viewDidLoad
{
[超级视图下载];
key=@“您自己的密钥”;
//编码
NSString*encodingString=[[自我加密:[@“您的字符串”
dataUsingEncoding:NSUTF8StringEncoding]
base64EncodedString];;
//解码
NSData*data=[自解密:[NSData dataFromBase64String:encryptString]];
NSString*decodingString=[[NSString alloc]initWithBytes:[数据字节]长度:
[数据长度]编码:NSASCIIStringEncoding];
}
-(NSData*)加密:(NSData*)明文{
返回[自转换:kCCEncrypt数据:明文];
}
-(NSData*)解密:(NSData*)密文{
返回[自转换:kCCDecrypt数据:密文];
}
-(NSData*)转换:(cOperation)加密加密数据:(NSData*)输入数据{
//kCCKeySizeAES128=16字节
//CC_MD5_摘要_长度=16字节
NSData*secretKey=[ChipperObject md5:Key];
CCCryptorRef cryptor=NULL;
CCCryptorStatus状态=kCCSuccess;
uint8_t iv[KCCBlocksizeeAes128];
memset((void*)iv,0x0,(size_t)sizeof(iv));
状态=CCCryptorCreate(encryptOrDecrypt,
kCCAlgorithmAES128,KCCOPIONPKCS7填充,
[secretKey字节]、kCCKeySizeAES128、iv和cryptor);
如果(状态!=kCCSuccess){
返回零;
} 
size\u t bufsize=CCCryptorGetOutputLength(cryptor,(size\u t)[输入数据长度],
正确的);
void*buf=malloc(bufsize*sizeof(uint8_t));
memset(buf,0x0,bufsize);
尺寸=0;
大小\u t ByTestTotal=0;
状态=CCCryptoRuUpdate(cryptor,[inputData字节],(size_t)[inputData长度],
buf、bufsize和bufused);
如果(状态!=kCCSuccess){
免费(buf);
CCCryptorRelease(cryptor);
返回零;
}
bytesTotal+=bufused;
状态=CCCryptorFinal(加密器、buf+BUFUSE、bufsize-BUFUSE和BUFUSE);
如果(状态!=kCCSuccess){
免费(buf);
CCCryptorRelease(cryptor);
返回零;
}
bytesTotal+=bufused;
CCCryptorRelease(cryptor);
返回[NSData DATA WITH BYTESNOPY:buf length:bytesTotal];
}

检查一次

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

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

       #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];
#导入
#进口
-(无效)viewDidLoad
{
[超级视图下载];
key=@“您自己的密钥”;
//编码
NSString*encodingString=[[自我加密:[@“您的字符串”
dataUsingEncoding:NSUTF8StringEncoding]
base64EncodedString];;
//解码
NSData*data=[自解密:[NSData dataFromBase64String:encryptString]];
NSString*decodingString=[[NSString alloc]initWithBytes:[数据字节]长度:
[数据长度]编码:NSASCIIStringEncoding];
}
-(NSData*)加密:(NSData*)明文{
返回[自转换:kCCEncrypt数据:明文];
}
-(NSData*)解密:(NSData*)密文{
返回[自转换:kCCDecrypt数据:密文];
}
-(NSData*)转换:(cOperation)加密加密数据:(NSData*)输入数据{
//kCCKeySizeAES128=16字节
//CC_MD5_摘要_长度=16字节
NSData*secretKey=[ChipperObject md5:Key];
CCCryptorRef cryptor=NULL;
CCCryptorStatus状态=kCCSuccess;
uint8_t iv[KCCBlocksizeeAes128];
memset((void*)iv,0x0,(size_t)sizeof(iv));
状态=CCCryptorCreate(encryptOrDecrypt,
kCCAlgorithmAES128,KCCOPIONPKCS7填充,
[secretKey字节]、kCCKeySizeAES128、iv和cryptor);
如果(状态!=kCCSuccess){
返回零;
} 
size\u t bufsize=CCCryptorGetOutputLength(cryptor,(size\u t)[输入数据长度],
正确的);
void*buf=malloc(bufsize*sizeof(uint8_t));
memset(buf,0x0,bufsize);
尺寸=0;
大小\u t ByTestTotal=0;
状态=CCCryptoRuUpdate(cryptor,[inputData字节],(size_t)[inputData长度],
buf、bufsize和bufused);
如果(状态!=kCCSuccess){
免费(buf);
CCCryptorRelease(cryptor);
返回零;
}
bytesTotal+=bufused;
状态=CCCryptorFinal(加密器、buf+BUFUSE、bufsize-BUFUSE和BUFUSE);
如果(状态!=kCCSuccess){
免费(buf);
CCCryptorRelease(cryptor);
返回零;
}
bytesTotal+=bufused;
CCCryptorRelease(cryptor);
返回[NSData DATA WITH BYTESNOPY:buf length:bytesTot
       #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];