2017-10-23 13 views
1

upvoted答えのコードスニペットを使用して暗号化にCryptoJSを使用しようとしています。CryptoJS AES encryption and Java AES decryptionです。CryptoJS暗号化に必要なJSライブラリ

var text = "The quick brown fox jumps over the lazy dog. "; 
var secret = "René Über"; 
var encrypted = CryptoJS.AES.encrypt(text, secret); 
encrypted = encrypted.toString(); 
console.log("Cipher text: " + encrypted); 

しかし、これに必要なJSファイルを含める方法については言及していません。私はそれらを含めるために以下のリンクを使ってみました。

'aes':'http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes', 
'enc-base64-min':'http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min' 

しかし、それはエラーになります「そのMIMEタイプ( 『text/htmlの』)が実行可能ではないため、スクリプトを実行するために拒否し、厳格なMIMEタイプのチェックが有効になっています。」

スクリプトを実行する方法、他のURLを含める方法、またはこれらのjsファイルを手動で含めることができるかを教えてください。ここで

私main.jsが

requirejs.config({ 
    // Path mappings for the logical module names 
    paths: { 
     'knockout': '../../js/libs/knockout/knockout-3.4.0', 
     'jquery': '../../js/libs/jquery/jquery-1.9.1', 
     'jqueryui': '../../js/libs/jquery/jquery-ui-1.10.4.custom', 
     'ojs': '../../js/libs/oj/v3.2.0/min', 
     'ojL10n': '../../js/libs/oj/v3.2.0/ojL10n', 
     'ojtranslations': '../../js/libs/oj/v3.2.0/resources', 
     'text': '../../js/libs/require/text', 
     'jqueryui-amd': '../../js/libs/jquery/jqueryui-amd-1.12.0', 
     'promise': '../../js/libs/es6-promise/es6-promise', 
     'hammerjs': '../../js/libs/hammer/hammer-2.0.8', 
     'ojdnd': '../../js/libs/dnd-polyfill/dnd-polyfill-1.0.0', 
     'signals': '../../js/libs/js-signals/signals', 
     'customElements': '../../js/libs/webcomponents/CustomElements', 
     'proj4': '../../js/libs/proj4js/dist/proj4-src', 
     'css': '../../js/libs/require-css/css', 
     'crypto-js': 'crypto-js/crypto-js-develop' 
    },// Shim configurations for modules that do not expose AMD 
    shim: { 
     'jquery': { 
      exports: ['jQuery', '$'] 
     }, 
     'jqueryui': { 
      deps: ['jquery'] 
     } 
    }, 
    config: { 
     ojL10n: { 
      merge: { 
      } 
     } 
    }, 
    catchError: true 
}); 

require([ 'ojs/ojcore', 'knockout', 'jquery', 'commonController', 'ojs/ojknockout','ojs/ojmodule','ojs/ojcomponents', 
     'ojs/ojaccordion', 'ojs/ojcollapsible', 'ojs/ojselectcombobox', 'ojs/ojtoolbar', 
     'ojs/ojprogressbar', 'ojs/ojinputnumber', 'ojs/ojrouter', 'ojs/ojtable', 'ojs/ojarraytabledatasource','promise','ojs/ojinputtext','crypto-js'], 
     function(oj, ko, $, commonController) { 


    $(function() { 

     function init() { 
      oj.Router.sync().then(function() { 

       ko.applyBindings(commonController, document.getElementById('globalBody')); 
      }, function(error) { 
       oj.Logger.error('Error in root start: ' + error.message); 
       alert(error); 
      }); 
     } 

     init(); 
    }); 
}); 

requirejs.onError = function (err){ 
    //alert(err); 
}; 
+0

使用しているURLはどちらも404です!だからこそ、あなたは最初の場所でプレーンなHTMLページを提供されているのです... – Salketer

+0

あなたの編集を見ると、私の推測では、crypto-jsフォルダが間違っています...他のパッケージの隣に座っていませんか? – Salketer

答えて

2

どのように見えるかAESとbase64では、すでにCryptoJSの一部であるされています。より多くのスクリプトを含める必要はありません。あなたが暗号jsの分布のパスに場所を変更する必要があります

require.config({ 
    packages: [ 
     { 
      name: 'crypto-js', 
      location: 'path-to/bower_components/crypto-js', 
      main: 'index' 
     } 
    ] 
}); 

var CryptoJS = require("crypto-js"); 

// Encrypt 
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123'); 

// Decrypt 
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123'); 
var plaintext = bytes.toString(CryptoJS.enc.Utf8); 

console.log(plaintext); 

requireJSで使用するには:project's github pageから

。また、あなたのようにcryptoJSの使用を変更する必要があります

require(["crypto-js"], function (CryptoJS) { 
    // Encrypt 
    var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123'); 

    // Decrypt 
    var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123'); 
    var plaintext = bytes.toString(CryptoJS.enc.Utf8); 

    console.log(plaintext); 

}); 
+0

しかし、CryptoJSはどのように組み込むのですか? – Arunabh

+0

私はvar CryptoJS = require( "crypto-js")を使ってみました。しかし、CryptoJS.AES.encrypt行で、CryptoJSはjsファイルをロードできなかったことを意味するundefinedになります。あなたは助けてください。 – Arunabh

+0

そのコードはNodeJSサーバー上またはブラウザ内で実行されていますか? – Salketer

関連する問題