iOS Objective-C 與 PHP DES 加解密演算法實作


PHP DES 加密 Objective-C 解密實作

在使用 php-mcrypt 函式庫進行 DES 加解密時,常常會碰到在其他平台無法正確解密資料,是因為 PHP Mcrypt Library 沒有提供將明文訊息轉換為標準 PKCS#7 的格式 (定義在 RFC 5652) 所造成。以下程式碼說明使用 PHP mcrypt_encrypt function 依據 PKCS#7 規範對字串進行 DES 加密,並且使用 Base64 編碼後輸出後再使用 DES 解密後的結果 (包含 iOS 的 DES 解密實作)。遵循標準的 PKCS#7 規範實作,密文在其他的程式語言中才能正確地進行解密。以下為 PHP DES 加解密的程式碼,後面會介紹 Object-C 的加解密實作。

 PHP 執行結果如下:

那在 iOS 中該如何進行解密呢?我們可以透過 iOS 內建的 CommonCryptor 函式庫進行 DES 加解密,使用時記得加入以下程式碼來引入需要的 Header。

在 iOS 對於 Base64 編碼 (解碼) 的實作,我們可以引用 GTM Library GTMBase64 Class 來進行,這時需要 GTMBase64.h, GTMBase64.m, GTMDefines.h 這三支檔案,程式可以在 GTM Source Code 下載。GTM 全名為 Google Toolbox for MAC,其中實作了許多好用的函式庫,並且使用 Apache License 2.0 作為授權。經過比較發現 GTMBase64 在實作上確實比較完整,因此我們採用 GTMBase64 作為編碼函式。Objective-C 實作 DES 解密,程式碼如下:

接下來我們將剛剛 PHP 輸出的 Base64 密文進行解密,參考以下程式碼:

執行結果輸出到 console,輸出資料如下:

最後補充一下網友(waxdoll)所提供的 Object-C DES 加密程式,程式碼如下:

參考資料

Facebook 留言

廣告

樂樂童鞋