Angular 2:window.crypto.subtle.importKey 适用于 'localhost' 但不适用于 'ip'
Angular 2: window.crypto.subtle.importKey works in 'localhost' but not on 'ip'
我是 Angular 的菜鸟 2. 我正在尝试实现一个登录表单,该表单在经过某些加密步骤后将 emailid 和密码发送到服务器。
我已经通过使用来自
的 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:只允许安全来源”。
我用Chromecanary的时候说importKey方法无法识别。因此,当我使用 Chrome 对其进行“控制”时,控件并没有超出 importKey 方法。可能是什么问题?
Chrome 限制 WebCryptographyApi 的使用以保护来源。意思是'https'。 localhost
是为开发启用的特殊地址。因此,要在真实环境中使用 WebCrypto,您需要设置一个 SSL/TLS 服务器
我是 Angular 的菜鸟 2. 我正在尝试实现一个登录表单,该表单在经过某些加密步骤后将 emailid 和密码发送到服务器。
我已经通过使用来自
的 AES-CTR 实现了 AES-ECBhttps://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:只允许安全来源”。
我用Chromecanary的时候说importKey方法无法识别。因此,当我使用 Chrome 对其进行“控制”时,控件并没有超出 importKey 方法。可能是什么问题?
Chrome 限制 WebCryptographyApi 的使用以保护来源。意思是'https'。 localhost
是为开发启用的特殊地址。因此,要在真实环境中使用 WebCrypto,您需要设置一个 SSL/TLS 服务器