zoukankan      html  css  js  c++  java
  • php ios通用的AES加密方法

    AES for iphone下载AES库

    在不同平台进行AES加密,并使用Base64进行编码,结果有可能不同,但解密之后会一样,所以不要因为在2个平台加密结果不一样而认为自己错了。。。

    php加密解密: 

    <?php
    
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
    
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    
    $key = 'a16byteslongkey!a16byteslongkey!';
    
    $plaintext = "iphone";
    
     
    
    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB);
    
    $base64encoded_ciphertext = base64_encode($ciphertext);
    
    echo "ciphertext: ".$base64encoded_ciphertext."<br/>";
    
     
    
    $plaintext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($base64encoded_ciphertext), MCRYPT_MODE_ECB);
    
    echo "plaintext: ".$plaintext."<br/>";
    
     
    
    $base64encoded_ciphertext =  "I3chV+E2XUHeLCcJAhBaJQ==";
    
    $plaintext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($base64encoded_ciphertext), MCRYPT_MODE_ECB);
    
    echo "plaintext: ".trim($plaintext);
    
    ?> 

    iphone加密解密

    #import "NSString+AESCrypt.h"
    NSString *key = @"a16byteslongkey!a16byteslongkey!";
    NSString *plaintext = @"iphone";
    NSString *ciphertext = [plaintext AES256EncryptWithKey: key];
    NSLog(@"ciphertext: %@", ciphertext);
    plaintext = [ciphertext AES256DecryptWithKey: key];
    NSLog(@"plaintext: %@", plaintext);

    Demo:

    php 代码:

    <?php
    $key = "test_AES_key";
     
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $key = md5($key);
    $plaintext = "ksfe";
     
    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB);
    $base64encoded_ciphertext = base64_encode($ciphertext);
    echo $base64encoded_ciphertext."<br/>";
     
    //$plaintext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($base64encoded_ciphertext), MCRYPT_MODE_ECB);
    //echo "plaintext: ".$plaintext."<br/>";
    ?>
     
    iphone 代码:
    -(NSString *)md5:(NSString *)str { 
        const char *cStr = [str UTF8String]; 
        unsigned char result[32]; 
        CC_MD5( cStr, strlen(cStr), result ); 
        return [NSString stringWithFormat: 
                @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
                result[0], result[1], result[2], result[3], 
                result[4], result[5], result[6], result[7], 
                result[8], result[9], result[10], result[11], 
                result[12], result[13], result[14], result[15] 
                ]; 
    }
     
    #import "NSString+AESCrypt.h"
     
    NSString *strKey = @"test_AES_key";
    NSData *chipherData = [NSData dataWithContentsOfURL: [NSURL URLWithString: @"http://192.168.157.1/index_aes.php"]];
        
    NSString *chipherText = [[NSString alloc] initWithData: chipherData encoding: NSUTF8StringEncoding];
    NSString *plainText = [chipherText AES256DecryptWithKey: [self md5: strKey]];
    NSLog(@"plainText: %@", plainText);

  • 相关阅读:
    常见mysql中出现的问题
    php 根据身份证号相关操作
    Linux的上传文件和下载文件
    php实现socket
    PHP开启缓存加速
    spark使用Hive表操作
    部署ganglia3.7
    Redis Cluster架构优化
    spark读取hdfs数据本地性异常
    spark join broadcast优化
  • 原文地址:https://www.cnblogs.com/shuaixf/p/2815973.html
Copyright © 2011-2022 走看看