- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个使用 CryptoJS 实现的系统。
在编写代码后,我发现了 crypto.subtle.encrypt
,它是浏览器中内置的 AES 实现。
我想将我的代码从使用 CryptoJs 改为使用 crypto.subtle.encrypt。
以旧方式 (CryptoJS) 编码的数据必须与新方式 (crypto.subtle.encrypt) 兼容。
我怎样才能做到这一点?
当我写我的原始代码时,它看起来很像这样:
function cryptojs_encrypt(message) {
var key = "my password";
return CryptoJS.AES.encrypt(message, key).toString());
}
传入的“key”只是一个字符串。从我从其他 stackoverflow 问题中读到的内容来看,CryptoJS 将这个字符串转换为“key”和“iv”。这究竟是如何实现的?我尝试查看 CryptoJS 源代码,但找不到我要找的东西。
subtle.crypt.encrypt 的工作方式是您必须显式传递 key 和 iv。这是我的代码:
function subtle_encrypt(message) {
var msg = new TextEncoder().encode(message);
var pass = new TextEncoder().encode('my password');
var alg = { name: 'AES-CBC', iv: pass };
crypto.subtle.importKey('raw', pass, alg, false, ['encrypt']).then(function(key){
crypto.subtle.encrypt(alg, key, msg).then(function(ctBuffer){
var string = btoa(ctBuffer);
console.log("result", string);
});
});
}
这有效但返回不同的结果。我需要修改进入 alg
的参数,它匹配 CryptoJS 在您传入字符串时使用的参数。我该怎么做?
最佳答案
我创建了一个小型库来执行此操作。
嵌入 WebCrypto.js (缩小)在您的文档中。
像这样使用它:
// Initialize the library
initWebCrypto();
// Encrypt your stuff
WebCrypto.encrypt({
data: btoa("my message"),
password: "my password",
callback: function(response){
if( !response.error ){
console.log(response.result); // Compatible with CryptoJS
}else{
console.error(response.error);
}
}
});
参见 https://github.com/etienne-martin/WebCrypto.swift/blob/master/www/index.html更多示例。
源代码:https://github.com/etienne-martin/WebCrypto.swift/blob/master/source.js
希望这对您有所帮助!
关于javascript - 让 crypto.subtle.encrypt 像 CryptoJS.AES.encrypt 一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42915829/
我想知道如何实现类似于 Epiphany(又名 Gnome Web)正在使用的进度条/加载器指示器。请参阅提供的屏幕截图: 最佳答案 如果我正确阅读 Epiphany 源代码,它只是一个样式化的 Gt
我正在尝试在golang中实现以下JS代码,但在golang的加密软件包中找不到任何导出 key 方法: JS代码: return Crypto.subtle.generateKey({
在 javascript 中,是否可以在同步函数中使用浏览器内置的 sha256 哈希( https://developer.mozilla.org/en-US/docs/Web/API/Subtle
我正在使用 Node v17.4 并想使用 webcrypto API。基于 this example我正在尝试导入 subtle进入我的项目,但 TypeScript 出现错误 Property '
我已经运行了来自 MDN doc 的这个例子 const text = 'An obscure body in the S-K System, your majesty. The inhabitant
根据 bip39 standard ,我想从 javascript 中的mnemonic words 中获取seed。 我使用这段代码: function mnemonicToSeed(mnemoni
在an answer on another question ,据称当使用带有 QSerialPort 的主 Qt 事件循环时,QSerialPort::waitForBytesWritten 会导致
在 Chrome 60 中,他们添加了一项针对非 TLS 连接禁用 crypto.subtle 的功能。出于安全原因,我们的产品需要运行本地服务器并将一些安全远程连接转发到 localhost。因为
我使用 python 生成了 RSA key 对,我想在 javascript 中导入它。我成功导入了公钥,但在导入私钥时遇到了困难。 Python: from Cryptodome.PublicKe
我正在制作一个带有主干的 Cordova 应用程序,我的目标是使用 JSON Web token (JWT) 实现套接字身份验证。 为了签署我的 JWT,我使用了 webcrypto-jwt在浏览器中
我正在尝试使用相应的私钥对使用公钥编码的 RSA 2048 位消息进行解码。环境是 google chrome,我使用的是 window.crypto.subtle API。 我生成了 key 对并使
我正在使用 window.crypto.subtle.importKey() 作为我的应用程序中的身份验证过程之一。当我在节点服务器上运行它时它可以工作,但当我将它托管在 IIS 上时它不工作。 Er
我正在开发 React Native 应用程序,并且有一个如下所示的配置文件组件: 容器有 backgroundColor: '#fff',铅笔图标有 borderColor: '#fff'。 但是,
当我尝试在 Firefox 上使用 Crypto API 时遇到了问题。 (doc)当我尝试使用此函数加密明文时,出现类型错误: window.crypto.subtle.encrypt(algo_e
我目前在 Javascript 中使用 window.crypto.subtle.encrypt 中的网络加密 API。我的问题是,这默认使用什么填充?我已经搜索了一段时间,但找不到任何答案。 最佳答
这真的很尴尬 几乎在互联网上的任何网站上, window.crypto.subtle 返回 SubtleCrypto {} __proto__: SubtleCrypto 在 chrome 控制台
我编写了一个使用 CryptoJS 实现的系统。 在编写代码后,我发现了 crypto.subtle.encrypt,它是浏览器中内置的 AES 实现。 我想将我的代码从使用 CryptoJs 改为使
我正在使用 Cordova 和 forge library和浏览器的 Web Crypto API执行 sign和 importKey操作。尽管如此,Android 设备上的 Web Crypto A
我想要做的是在 javascript 中生成一个 key 对,并在 PHP 中使用这些加密,然后用 JS 解密。 我在附加的代码中有两个问题 它不会从装甲文本块重新加载私钥 并且它不会解密 PHP 加
我正尝试按如下方式导入 ECDSA 公钥: ua8 = new Uint8Array( [48, 86, 48, 16, 6, 4, 43, 129, 4, 112, 6, 8, 42, 134, 7
我是一名优秀的程序员,十分优秀!