我正在尝试使用CryptoJS进行加密,使用来自CryptoJS AES encryption and Java AES decryption的推荐答案的代码段。
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 :(得分:3)
AES和base64已经是CryptoJS的一部分。无需包含更多脚本。
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一起使用:
require.config({
packages: [
{
name: 'crypto-js',
location: 'path-to/bower_components/crypto-js',
main: 'index'
}
]
});
您需要将位置更改为crypto-js发行版的路径。另外,你应该改变你对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);
});