【问题标题】:How to independence inject Browserify Crypto in Angular Ionic如何在 Angular Ionic 中独立注入 Browserify Crypto
【发布时间】:2015-11-09 08:52:21
【问题描述】:

我是离子和棱角分明的新蜜蜂。我使用 Browserify 为我的 Ionic 项目需要 nodejs 的 Crypto 模块。以下是我的步骤:

  1. 我在 app.js 文件中添加了新行

angular.module(.....).constant('Crypto',require('crypto'))

  1. 我运行命令行,用 Crypto 模块的代码和 app.js 文件完美地创建新文件

浏览 app.js > bundle.js

  1. 我在 index.html 文件中用 bundle.js 替换 app.js

  2. 我尝试在 service.js 中测试它

angular.module('mapp.services').factory('abc',['$http','Crypto',function($http,Crypto){
返回 {
getAllProduct:function(){ console.log(Crypto.SHA256("Message")); });
} }]);

它返回消息“Crypto.SHA256 不是函数”。我认为“常量”是指一个值,而不是静态对象,因此我不能将 Crypto 传递给“常量”。那么,如何通过 Browserify 在 app.js 文件中要求所有需要的模块,然后在其他 js 文件中使用它,例如 $http? 谢谢!

【问题讨论】:

  • 如果您执行console.dir(Crypto) 而不是尝试调用可能不存在的函数,您可以在控制台中获得更有用的错误消息,这将让您看到@987654322 的实际javascript 对象@call 实际上是通过 browserify 注入到你的应用程序中的。
  • 我添加了 console.dir(Crypto)。它返回“0 977846 目录”。这是什么意思?而且我认为如果我将其推送到“angular.module(.....).constant('Crypto',require('crypto'))”,系统只会将其视为简单值,对吗?跨度>
  • 看起来它试图将包装器导入本机系统调用但失败了。基本上所有 Crypto 在服务器上所做的都是包装 OpenSSL,因此尝试将其转换为浏览器使用只是创建一个字符串,就像您使用文件指针和 not 可以执行实际加密功能的 Crypto 对象一样.您需要切换库以使您正在做的工作。

标签: angularjs node.js cordova ionic browserify


【解决方案1】:

抱歉,因为我的愚蠢问题。我们可以将 Crypto 对象分配给常量池的事实。问题是我的代码。要加密字符串,代码必须是

crypto.createHash('sha256').update(mystr).digest('base64');

而不是

crypto.sha256(mystr)

现在问题已解决,但感谢您的所有回复和 cmets。

【讨论】:

    【解决方案2】:

    我认为 Crypto 不能在客户端上运行,它是用于执行加密的服务器端库,主要是围绕 OpenSSL (see here) 的包装。

    它封装的函数不能在 Ionic/Angular 中调用,原因很简单,它们在客户端上不可用。

    尝试使用CryptoJS 代替this answer 提出的建议 - 它被设计为在您的 Ionic/Angular 项目中使用客户端来执行与加密相关的操作。

    【讨论】:

    • 我用过Browserify
    • Browserify 只能转换纯 javascript 库以便在浏览器中使用,Crypto 依赖于用 C++ 编写的无法转换的服务器库。我认为 Crypto 不会与 browserify 一起使用。我建议尝试使用我链接的 CryptoJS 库或另一个具有您想要的功能的纯 JavaScript 库。
    • @supper aban:它也对我有用,CryptoJS 给了我错误的结果!
    猜你喜欢
    • 2019-02-11
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2022-06-28
    相关资源
    最近更新 更多