app加密算法

php端

<?php
namespace app\controllers;
use yii\web\Controller;
class TestController extends Controller
{
public function actionIndex(){
// return $this->get_real_ip();
$time=time().‘000‘;
$ip=$this->get_real_ip();
return $this->aes128Encrypt(‘e234242423‘,"timestamp=".$time."&ip=".$ip);
$sign=bin2hex($this->aes128Encrypt(‘跟软件后台的密钥字符相同‘,"timestamp=".$time."&ip=".$ip));
return $sign;
}

public function aes128Encrypt($key, $data) {
$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);
$keySize = 16;
$ivSize = 16;
$rawKey = $key;
$genKeyData = ‘‘;
return md5(‘sdfsfs‘,true);
return md5( $genKeyData.$rawKey, true );
do
{
$genKeyData = $genKeyData.md5( $genKeyData.$rawKey, true );
} while( strlen( $genKeyData ) < ($keySize + $ivSize) );
return $genKeyData;

$generatedKey = substr( $genKeyData, 0, $keySize );
$generatedIV = substr( $genKeyData, $keySize, $ivSize );
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $generatedKey, $data, MCRYPT_MODE_CBC, $generatedIV);
}

public function get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) {
$ips = explode (", ", $_SERVER[‘HTTP_X_FORWARDED_FOR‘]);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER[‘REMOTE_ADDR‘]);
}

}

ios端

NSData *dataValue = [NSData dataWithBytes:[value cStringUsingEncoding:NSUTF8StringEncoding] length:value.length];
    
    int padding = 16 - value.length%16;
    // 从指定的ASCII返回值
    NSString * asciiValue = [NSData strChr:padding];
    
    NSMutableString * paddingString = [NSMutableString string];
    
    for (int i=0; i<padding; i++) {
        [paddingString appendString:asciiValue];
    }
    
    // 加密的数据加padding
    NSString * dataString = [NSString stringWithFormat:@"%@%@",value,paddingString];
    
    NSLog(@"%@",dataString);
    
    int keySize = 16;
    int ivSize = 16;
    NSString * rawKey = key;
    NSMutableString * genKeyData = [NSMutableString string];
    
    do {
       
        NSString *md5Str = [NSString stringWithFormat:@"%@%@",genKeyData,rawKey];
        
        // md5 16位 加密
        NSString *newMD5Str = [NSData createMD5:md5Str];

[genKeyData appendString:newMD5Str];
        
    } while (genKeyData.length < keySize + ivSize);
    
    // 最总加密的key和向量
    NSString *generatedKey = [genKeyData substringWithRange:NSMakeRange(0, keySize)];
    NSString *generatedIV = [genKeyData substringWithRange:NSMakeRange(keySize, ivSize)];
    
    // 加密
    size_t bufferSize = [dataValue length] + kCCBlockSizeAES128;
    void *buffer = malloc(bufferSize);
    size_t numBytesEncrypted = 0;
    CCCryptorStatus cryptorStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                            (__bridge const void *)(generatedKey), kCCKeySizeAES128,
                                            (__bridge const void *)(generatedIV),
                                            [dataValue bytes], [dataValue length],
                                            buffer, bufferSize,
                                            &numBytesEncrypted);
    
    if(cryptorStatus == kCCSuccess){
        NSLog(@"Success");
        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
    }else{
        NSLog(@"Error");
    }
    
    free(buffer);
    return nil;

时间: 2024-08-08 13:20:26

app加密算法的相关文章

浅谈手机APP的内容采集

当前工作中遇到一些客户要求采集手机APP里面的内容,随着移动端的兴起,这方面的需求会越来越多,在当前的互联网环境下,移动端越来越受重视,从内容上就能看出来,移动端内容更加丰富,体验更好,网站端内容就没有那么丰富了,从这个角度能看出转义的趋势.网站端的采集相对好做,至少从功能上讲是这样,功能是指将数据采集下来的能力,但是从性能上讲,网终端的采集也并不简单.为什么网站端实现数据采集功能相对容易呢,是因为网站内容我们是通过浏览器看的,而浏览器是一个公共的标准的平台,也就是说客户端没有发布内容企业自己的

Android安全开发之浅谈密钥硬编码

Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风险.信息安全的基础在于密码学,而常用的密码学算法都是公开的,加密内容的保密依靠的是密钥的保密,密钥如果泄露,对于对称密码算法,根据用到的密钥算法和加密后的密文,很容易得到加密前的明文:对于非对称密码算法或者签名算法,根据密钥和要加密的明文,很容易获得计算出签名值,从而伪造签名. 2 风险案例 密钥硬

Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解

说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容. 广泛应用在包括了用户登入.数字签名.数据传输等多个场合.今天我把常见的加密算法全部整理在这里,供大家学习参考. 首先,大家要知道加密算法能干什么,利用加密算法来对数据通信的过程进行加密传输是一种最常见的安全手段.利用该手段能够达到一下三个目的: 1.数据保密性,防止用户数据被窃取或泄露: 2.数据完整性,防止用户传输的数据被篡改: 3.通信双方身份确认,确保数据来源合法: 常见

Tp5框架 关于App登录token唯一加密算法

web登录靠的是cookies里的sessionid来区分唯一性.app登录靠的是token唯一性. 个人针对token加密的笔录: public static function setAppLoginToken($phone = '') {$str = md5(uniqid(md5(microtime(true)), true));$str = sha1($str.$phone);return $str;} 原文地址:http://blog.51cto.com/kangjunfei/21510

PHP android ios相互兼容的AES加密算法

APP项目用户密码传输一直没有用HTTPS,考虑到用户的隐私暂时先用AES对密码加密,以后也可以用于手机端与服务端加密交互. PHP的免费版phpAES项目,手机端解码各种不对. 好不容易找了PHP ANDROID IOS,相互加解密正常的AES加密算法代码. PHP的AES加密算法: [codesyntax lang=”php”] <?php class MCrypt { private $hex_iv = '00000000000000000000000000000000'; # conve

IOS平台APP安全Checklist

#1. 前言IOS平台APP安全风险相关的一般性Checklist,保障IOS客户端安全评估的质量与效率.#2. 数据安全##2.1 传输安全该类漏洞的审查场景:APP通过网络发送或接收敏感信息,比如用户口令.用户隐私信息等,或者通过网络下发的数据执行某些敏感操作**漏洞类型说明:**由于移动设备通常是通过wifi上网,因而面临网络窃听.网络劫持等中间人攻击行为,因此对于敏感信息需要加密传输,并且对接收到的重要数据也需要进行完整性校验.如果APP自身实现了加密及完整性校验的机制,需要确认机制是否

php做APP接口开发,接口的安全性

1.当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session(或者保存在redis)中,将生成的access_key和session_id返回给APP端. 2.APP端将接收到的access_key和session_id保存起来 3.当APP端调用接口传输数据时,将所传数据和access_key使用加密算法生成签名signature,并将signature和session_id一起发送给服务器端.

app服务器

http://heipark.iteye.com/blog/1847421http://heipark.iteye.com/blog/1847421http://wenku.baidu.com/view/f761cc1f55270722192ef769.html 服务框架:1.servlet2.netty协议:1.http 1.02.http 1.1db:mysql就可以了ORM框架:mybatis缓存:redis 技术:网络通信: tcp,http等:Web服务:servlet, cgi脚本,

浅谈DES加密算法

一.DES加密算法介绍 1.要求密钥必须是8个字节,即64bit长度 2.因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3.加密.解密都需要通过字节数组作为数据和密钥进行处理 二.对称加密 DES加密算法属于对称加密. 即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行复杂的移位.算数运算或者数据处理等操作,形成只有特定的密码才能够解开的数据. 加密与解密用的是同一个密钥 三.相关类 1.Cipher: Java/Android要