javascript - CryptoJS 加密所需的 JS 库

标签 javascript encryption aes cryptojs

我正在尝试使用来自 CryptoJS AES encryption and Java AES decryption 的赞成答案中的代码片段来使用 CryptoJS 进行加密。 .

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);
};

最佳答案

AES 和 base64 已经是 CryptoJS 的一部分。无需包含更多脚本。

来自project's github page :

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);

});

关于javascript - CryptoJS 加密所需的 JS 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889186/

相关文章:

javascript - 动态引用变量(对象)?

javascript - 使用 JavaScript 在浏览器后面为同意调查的用户启动窗口

ios - iOS 应用程序中用于登录系统的标准程序是什么?

c# - 使用 RijndaelManaged 在 C# 中加密/解密流

javascript - 使用 Javascript 在浏览器中直接读取 Sqlite3 的最佳方法是什么?

javascript - 我可以从浏览器中运行的 JavaScript 直接连接到 Redis 服务器吗?

javascript - javascript中的elgamal解密

c# - 如何解密内存中的加密图像并在应用程序中使用

encryption - Golang AES ECB 加密

java - 解密在Android上加密的桌面数据