我是Angular 2的新手。我正在尝试实现一个登录表单,该表单在某些加密步骤之后将电子邮件ID和密码发送到服务器。

我已经通过使用AES-CTR实现了AES-ECB,

https://github.com/diafygi/webcrypto-examples

我使用了如下的“ importKey”和“ encrypt”方法,

public deriveAKey(input, encryptKey, cryptoIV) {

    var ref: TopDivComponent = this;
    console.log('Testing before importKey...');

    window.crypto.subtle.importKey(
        "raw",
        ref.stringToArrayBuffer(encryptKey),
        {
            name: "AES-CTR",
        },
        true,
        ["encrypt"]
    ).then(function (key) {
        console.log('Inside then...');
        var newvar = ref.stringToArrayBuffer(cryptoIV);
        var encrypt = window.crypto.subtle.encrypt(
            {
                name: "AES-CTR",
                counter: newvar,
                length: 128,
            },
            key,
            ref.stringToArrayBuffer(input)
        ).then(function (encrypted) {
            var temp = ref.arrayBufferToString(encrypted);
            console.log('Encrypted First: ' + encrypted);
            console.log('Temp: ' + temp);
            console.log('Key: ' + key);
            let fin_encrypted = btoa(temp);
            // console.log('Encrypted Snc/d: ' + fin_encrypted);
            ref.response(fin_encrypted);
            // console.log('From deriveKey: ' + fin_encrypted);
        });
    });
}


我使用本地服务器来获取响应。使用localhost时一切正常。从服务器正确发送并获取了请求和响应。但是,通过IP连接时,会显示错误“ NotSupportedError:仅允许安全来源”。

当我使用Chrome金丝雀时,它说无法识别importKey方法。因此,当我使用Chrome“控制台”它时,控件没有超出importKey方法。可能是什么问题?

最佳答案

Chrome限制了WebCryptographyApi的使用以保护来源。意思是“ https”。 localhost是可用于开发的特殊地址。因此,要在实际环境中使用WebCrypto,您需要设置SSL / TLS服务器

09-25 15:13