當前位置:首頁 » 編程語言 » iosphp開發

iosphp開發

發布時間: 2025-03-24 10:22:50

javaphp、.net、交互設計、移動開發iOS這幾個軟體技術方向學哪個比較好

  1. java:一種跨平台的面向對象語言,語言庫龐大,今後編程語言很可能會以java為基礎進行演化,學好java需要的時間是很長的,入門倒沒有多少門檻;

  2. php:伺服器端腳本語言,與java幾乎同時產生,但是它的語言就簡單得多了,而且會發現它裡面的很多語言是借鑒java的,比如反射。隨著b/s模式的發展,這個語言的人才需求量比較大;

  3. .net:微軟開發的平台,用來抗衡java平台,這個不多說,不是很懂。

  4. 交互設計:也不是很懂,聽名字好像是偏向於美工、gui設計之類的,似乎對編程要求不是很高;

  5. 移動開發IOS:開發安卓需要精通java,當然不精通雖然也能寫出來應用,但是終究會遇到瓶頸;ios開發需要學習object-c,也不是很懂,故不做評價。

Ⅱ iOS與php傳遞的josn數組解析

json_decode($ios,true);解析成數組
json_decode($ios);解析成對象

Ⅲ php加密文件 解密data 轉nsstring 為nil. rc4 ios

IOS:引入ios自帶庫 #include

先以DES加密演算法為例講解,DES的加密和解密都同用一個Key,下面兩個加解密函數如下:
//加密
-(NSString *) encryptUseDES:(NSString *)clearText key:(NSString *)key
{
//一般對加密的字元串採用UTF-8編碼 NSData存儲的就是二進制數據
NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
//See the doc: For block ciphers, the output size will always be less than or
//equal to the input size plus the size of one block.
//確定加密過後的字元串在內存中存放的大小,根據文檔,對於塊密碼方式(這個庫還包括流密碼方式)
//加密過後的字元串大小總是小於或等於加密之前數據的大小加上對應加密演算法的塊大小
//但看到一些大牛還這樣一下 & ~(kCCBlockSizeDES - 1) 目前不知道為嘛
size_t bufferSize = ([data length] + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);
//void *buffer = malloc(bufferSize);//可以手動創建buffer,但之後要記得free掉
unsigned char buffer[bufferSize]; //定義輸出加密串所佔內存空間
memset(buffer, 0, sizeof(char)); //採用ios中宏定義好的方法分配空間,可免去手動free
size_t numBytesEncrypted = 0; //輸出加密串的位元組數

//加密數據,採用庫中的CCCrypt方法,這個方法會按次序執行CCCrytorCreate(),
// CCCryptorUpdate(), CCCryptorFinal(), and CCCryptorRelease() 如果開發者自己create這個對象,
//那麼後面就必須執行final、release之類的函數,CCCrypt方法一次性解決

// Byte iv[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
//Byte iv[] = {1,2,3,4,5,6,7,8}; 加密所需的隨機字元
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, //加密方式,kCCEncrypt加密 kCCDecrypt解密
kCCAlgorithmDES, //採用的加密演算法,內置包含AES、DES、
//3DES、其他還有四個,不知道是什麼
//後續討論
//加密額外參數,注意此處各個平台之間指定的時候要記得一樣
kCCOptionPKCS7Padding | kCCOptionECBMode,
[key UTF8String], //加密密匙 UTF8的字元串
kCCKeySizeDES, //密匙長度位元組 各演算法有對應的長度宏
nil, //隨機字元,可指定也可不指定,各平台之間不絕對
[data bytes], //待加密串的位元組長度
[data length], //待加密串的長度
buffer, //輸出已加密串的內存地址
bufferSize, //已加密串的大小
&numBytesEncrypted);

NSString* plainText = nil;
if (cryptStatus == kCCSuccess) {
NSData *dataTemp = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
plainText = [GTMBase64 stringByEncodingData:dataTemp];
}else{
NSLog(@"DES加密失敗");
}
return plainText;
}

//解密
-(NSString*) decryptUseDES:(NSString*)cipherText key:(NSString*)key {
// 利用 GTMBase64 解碼 Base64 字串
NSData* cipherData = [GTMBase64 decodeString:cipherText];
size_t bufferSize = ([cipherData length] + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);
//unsigned char buffer[1024];
unsigned char buffer[bufferSize];
memset(buffer, 0, sizeof(char));
size_t numBytesDecrypted = 0;

// IV 偏移量不需使用
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding | kCCOptionECBMode,
[key UTF8String],
kCCKeySizeDES,
nil,
[cipherData bytes],
[cipherData length],
buffer,
bufferSize,//1024,
&numBytesDecrypted);
NSString* plainText = nil;
if (cryptStatus == kCCSuccess) {
NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];
plainText = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
}
return plainText;
}

java和php平台的代碼實現:

Java代碼 收藏代碼
import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class DES {

private byte[] desKey;

public DES(String desKey) {
this.desKey = desKey.getBytes();
}

public byte[] desEncrypt(byte[] plainText) throws Exception {
SecureRandom sr = new SecureRandom();
byte rawKeyData[] = desKey;
DESKeySpec dks = new DESKeySpec(rawKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey key = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key, sr);
byte data[] = plainText;
byte encryptedData[] = cipher.doFinal(data);
return encryptedData;
}

public byte[] desDecrypt(byte[] encryptText) throws Exception {
SecureRandom sr = new SecureRandom();
byte rawKeyData[] = desKey;
DESKeySpec dks = new DESKeySpec(rawKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey key = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key, sr);
byte encryptedData[] = encryptText;
byte decryptedData[] = cipher.doFinal(encryptedData);
return decryptedData;
}

public String encrypt(String input) throws Exception {
return base64Encode(desEncrypt(input.getBytes()));
}

public String decrypt(String input) throws Exception {
byte[] result = base64Decode(input);
return new String(desDecrypt(result));
}

public static String base64Encode(byte[] s) {
if (s == null)
return null;
BASE64Encoder b = new sun.misc.BASE64Encoder();
return b.encode(s);
}

public static byte[] base64Decode(String s) throws IOException {
if (s == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = decoder.decodeBuffer(s);
return b;
}

public static void main(String[] args) throws Exception {
String key = "abcdefgh";
String input = "a";
DES crypt = new DES(key);
System.out.println("Encode:" + crypt.encrypt(input));
System.out.println("Decode:" + crypt.decrypt(crypt.encrypt(input)));
}
}

php 方法一
Php代碼 收藏代碼
<?php
class DES1 {
var $key;
function DES1($key) {
$this->key = $key;
}
function encrypt($input) {
$size = mcrypt_get_block_size('des', 'ecb');
$input = $this->pkcs5_pad($input, $size);
$key = $this->key;
$td = mcrypt_mole_open('des', '', 'ecb', '');
$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
@mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_mole_close($td);
$data = base64_encode($data);
return $data;
}
function decrypt($encrypted) {
$encrypted = base64_decode($encrypted);
$key =$this->key;
$td = mcrypt_mole_open('des','','ecb','');
//使用MCRYPT_DES演算法,cbc模式
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
@mcrypt_generic_init($td, $key, $iv);
//初始處理
$decrypted = mdecrypt_generic($td, $encrypted);
//解密
mcrypt_generic_deinit($td);
//結束
mcrypt_mole_close($td);
$y=$this->pkcs5_unpad($decrypted);
return $y;
}
function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($text) {
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text))
return false;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad)
return false;
return substr($text, 0, -1 * $pad);
}
}
$key = "abcdefgh";
$input = "a";
$crypt = new DES1($key);
echo "Encode:".$crypt->encrypt($input)."<br/>";
echo "Decode:".$crypt->decrypt($crypt->encr

Ⅳ ios怎樣搭建php伺服器

一、准備

  • 一台安裝了OS X操作系統的電腦(筆記本或一體機)

  • 電腦上安裝了Xcode

  • 能連接到互聯網——我們需要從網路上下載一些資源

  • 了解基本的PHP代碼基礎和Mysql執行語句

  • 二、基本步驟

  • 配置PHP Apache環境

  • 下載並安裝MySql

  • 下載並使用phpMyAdmin

  • 三、詳細操作

    1.配置PHP Apache環境

    Mac OS上自帶PHP Apache環境,所以不需要另外下載安裝包,只需要簡單配置一下即可。

    (1)由於Apache目錄是隱藏目錄,如果系統目前不顯示隱藏文件和文件夾,我們可以通過在Finder窗口下使用Command+Shift+G組合快捷鍵,或者在Finder狀態下點擊頂部狀態欄的「前往——>前往文件夾」,在打開的對話框中輸入

  • /etc/apache2

  • 進入apache2目錄,然後使用文本編輯器打開名為「httpd.conf」的文件,如圖1所示。

    圖1

    (2)「httpd.conf」的文件中查詢到如下代碼:

  • #LoadMole php5_mole libexec/apache2/libphp5.so

  • 將該代碼前面的#號刪除,從而在Apache中啟用PHP5模塊。然後保存文件。

    在保存文件時,如果提示沒有修改該文件的系統許可權時,右鍵點擊該文件,選擇「顯示簡介」,然後點擊最右下角的小鎖圖標,將Privilege修改為Read&Write即可。同時我們還需要修改apache2這個文件夾的許可權。

    (3)接下來,打開「系統偏好設置」,選擇「共享」選項卡,在打開的對話框中確保「互聯網共享」未處於勾選狀態(筆者的系統是10.12.3版本),如圖2所示。

    圖2

    (4)最後,在終端輸入如下指令重啟apache:

  • sudo apachectl restart

  • 此時,在瀏覽器輸入

  • http://localhost/

  • 並回車,如果出現如圖3所示的結果,說明PHP環境配置成功。

    圖3

    2.下載並安裝MySql

    (1)進入MySQL官網下載頁面,在「Select Operating System:」下拉列表中選擇Mac OS X之後,在給出的下載列表中選擇DMG格式的文件進行下載。
    (2)下載完成後打開,可以看到如圖4所示的文件。先點擊安裝文件"mysql-5.7.18-macos10.12-x86_64.dmg"。

    圖4

    (3)安裝完成後,MySQL會給出一個默認密碼,保存一下這個密碼,下面會用到。選擇「系統偏好設置」,搜索到「MySQL」,點擊打開,然後開啟MsSQL,並勾選「開機自啟動」選項,如圖5所示。

    圖5

    (4)打開終端,輸入如下指令:

  • mysql -version

  • 若提示「-bash: mysql: command not found」,就需要先配置mysql bin目錄的環境變數。

    首先,在Finder狀態下,點擊屏幕上方導航欄「前往——>前往文件夾」,在彈出來的對話框中輸入「/etc/bashrc」,點擊確定。

    然後,使用文本編輯打開「bashrc」文件(仍然別忘了修改這個文件的讀寫許可權),在末尾加入如下代碼:

  • #mysqlalias mysql='/usr/local/mysql/bin/mysql'alias mysqladmin='/usr/local/mysql/bin/mysqladmin'

  • 然後,我們要修改MySQL給出的默認密碼。打開終端,輸入如下指令並回車:

  • mysqladmin -u root -p password

  • 然後終端提示「Enter password:」在此輸入剛才安裝完MySQL之後分配的默認密碼,然後回車,提示「New password:」,在此輸入新的密碼並回車,在「Confirm new password: 」後再次輸入新密碼並回車,則密碼就重置完成了。
    (5)如果使用終端來進行MySQL操作,無疑是一件很痛苦的事情。所以一般我們使用phpMyAdmin來進行資料庫的操作。前往phpAdmin下載頁面根據自己的需要下載phpAdmin(我下載的是phpMyAdmin-4.7.0-all-languages.zip)。下載完成後,解壓縮,並將解壓縮之後的文件夾改名為phpMyadmin。然後將該文件夾復制到「/Library/WebServer/Documents/」目錄下。
    (6)進入phpMyadmin文件夾,復制一個名為「config.sample.inc.php」的文件,粘貼到當前目錄下,並改名為「config.inc.php」。
    (7)使用文本編輯器打開「config.inc.php」,將

  • $cfg['Servers'][$i]['host'] = 'localhost';

  • 修改為:

  • $cfg['Servers'][$i]['host'] = '127.0.0.1';

  • 保存後,在瀏覽器輸入

  • http://localhost/phpmyadmin/

  •   進入phpAdmin登入界面,用戶名輸入為root,密碼為在第(4)步設置的新密碼。進入後能正常使用phpAdmin來操作MySQL。



    作者:三創iOS和PHP開發
    鏈接:https://www.jianshu.com/p/c3f53ed7e184
    來源:簡書
    著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

熱點內容
proe50編程 發布:2025-03-26 05:44:08 瀏覽:122
phpdatetime 發布:2025-03-26 05:43:33 瀏覽:948
oracle的linux客戶端配置 發布:2025-03-26 05:36:38 瀏覽:200
安卓app安裝包在哪個目錄 發布:2025-03-26 05:35:43 瀏覽:662
安卓愛奇藝觀看影片時如何看高清 發布:2025-03-26 05:34:13 瀏覽:532
換安卓手機如何把通訊錄 發布:2025-03-26 05:30:41 瀏覽:348
c語言的環境變數 發布:2025-03-26 05:20:57 瀏覽:957
哪個牌子的安卓手機界面好看 發布:2025-03-26 05:10:11 瀏覽:977
小樹茶存儲 發布:2025-03-26 05:04:56 瀏覽:572
pt上傳慢 發布:2025-03-26 04:31:17 瀏覽:54