2013-12-08 44 views
0

我正在使用Parse作爲我的iOS應用程序的後端,並且想要加密在Parse和我的iOS設備之間發送的所有數據。因此,我使用Parse Cloud Code希望能夠執行服務器端加密解密以處理其發送和接收的所有數據。針對iOS應用程序在Parse Cloud代碼上運行crypto-j的問題

顯然解析有'crypto' module by default,但因爲我一直無法找到它的任何文件,我已經先行一步,並使用crypto-js通過AES加密解密+適當的文件複製到我的解析雲代碼/cloud文件夾試過。

我遇到的問題是我不確定crypto-js的AES加密/解密函數返回什麼類的對象。我*似乎*要找回一個NSDictionary對象,但不知道如何處理它。我會猜想我會收到一個NSString或NSData對象,但我似乎猜到了錯誤。

請讓我知道我可以提供什麼額外的信息或我可能提出了什麼錯誤的假設。

回答

1

由於Parse使用SSL加密發送所有數據,SSL足以保護通信安全。

您可能想要加密數據,以便它在服務器上受到保護,但除非您真的瞭解加密安全性。

平原或加密密碼應從不被存儲,存儲一個妥善醃製和散列版本的密碼。

如果您覺得您的數據足夠有價值,請讓安全域專家設計它。獲得安全權利是很難的,一個錯誤就會使所有權無效。

+0

我只是好奇,什麼被認爲是「好習慣」,例如,應用戶的密碼確實被存儲在解析純文本? SSL是否足以保護髮送和接收數據?在使用Parse的默認設置之前,我只是試驗和測試可能性。 –

2

我需要加密/解密在服務器端,這裏是我的雲代碼,類似於代碼的NodeJS:

var crypto = require('crypto'); 
var cryptoAlgorithm = "aes-128-cbc"; //or whatever you algorithm you want to choose see http://nodejs.org/api/crypto.html 
var cryptoPassword = "theLongAndRandomPassphrase"; 
var cipher = crypto.createCipher(cryptoAlgorithm,cryptoPassword); 
var decipher = crypto.createDecipher(cryptoAlgorithm,cryptoPassword); 
exports.myCiphering = { 
    encrypt:function(text){ 
     var encrypted = cipher.update(text,'utf8','hex') 
     encrypted += cipher.final('hex'); 
     return encrypted; 
    }, 
    decrypt: function(text){ 
     var decrypted = decipher.update(text,'hex','utf8') 
     decrypted += decipher.final('utf8'); 
     return decrypted; 
    } 
}; 

如果這個片段已經保存在「雲/ ciphering.js」,你可以再使用這樣隨時隨地雲代碼加密工具:

var text = "encryptMe"; 

var ciphering = require("cloud/ciphering.js").myCiphering; 
var encrypted = ciphering.encrypt(text); 
var decrypted = ciphering.decrypted(encrypted); 

if (decrypted == text){ 
    //the "password" is correct 
} 
相關問題