在iOS应用程序的分析云代码上运行crypto-js的问题

Issues running crypto-js on Parse Cloud Code for iOS application

本文关键字:运行 crypto-js 问题 代码 iOS 应用程序      更新时间:2024-04-28

我正在使用Parse作为我的iOS应用程序的后端,并希望加密在Parse和我的iOS设备之间发送的所有数据。因此,我正在使用解析云代码,希望能够执行服务器端加密&解密以处理它发送和接收的所有数据。

显然,Parse默认有一个"crypto"模块,但由于我找不到任何文档,我继续尝试使用crypto js,将AES加密+解密的适当文件复制到我的Parse Cloud Code /cloud文件夹中。

我遇到的问题是,我不确定crypto-js的AES加密/解密函数返回的是哪类对象。我*似乎*正在取回一个NSDictionary对象,但不知道该怎么处理它。我本以为我会收到一个NSString或NSData对象,但我似乎猜错了。

请让我知道我可以提供哪些额外信息,或者我可能做出了哪些错误的假设。

我需要在服务器端加密/解密,这是我的云代码,类似于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;
    }
};

如果这个片段已经保存在"cloud/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
}

由于Parse使用SSL,所有数据都是加密发送的,因此SSL足以确保通信的安全。

您可能希望加密数据,以便在服务器上对其进行保护,但除非您真正了解加密安全性,否则不要这样做。

纯密码或加密密码应永远不要存储,存储正确的加密和散列版本的密码。

如果你觉得你的数据足够有价值,请一位安全领域专家来设计它。很难获得正确的安全性,一个错误就会使所有数据失效。