gpt4 book ai didi

node.js - 我如何使用 OAEP 对 RSACryptoServiceProvider (.net) 解密进行错误的 : SubtleCrypto (Node. js) 加密

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:02 26 4
gpt4 key购买 nike

我已经尝试破解这个问题有一段时间了,但没有成功。

服务器端解密使用RSACryptoServiceProvider RSA-OAEP。我无法改变这一点

public void SetEncryptedPassword(string password) {
using (RSACryptoServiceProvider decrypter = new RSACryptoServiceProvider()) {
decrypter.FromXmlString(Resources.PrivateKey);
var decryptedBytes = decrypter.Decrypt(Convert.FromBase64String(password), true);
_password = Encoding.UTF8.GetString(decryptedBytes).ToSecureString();
}
}

我正在尝试实现一个可以访问此服务的网络客户端,但我无法正确加密。我尝试过很多库,但发现 SubtleCrypto 的帮助最大,它至少可以接受服务器提供的公钥。我必须添加 kty、alg 和 ext 属性并将 key 编码为 URL Base64,但它似乎导入正常。加密确实会带来一些东西,所以我猜它起作用了?

const encrypt = async (msg)=>{ 

let msgBytes = stringToBytes(msg);
let publicKey2 = await window.crypto.subtle.importKey("jwk",publicKey, {name:"RSA-OAEP", hash:"SHA-256"}, true, ["encrypt"]).catch((issue)=>console.log(issue));

var result = await window.crypto.subtle.encrypt({name: "RSA-OAEP"}, publicKey2, msgBytes );

var toBase64 = _arrayBufferToBase64(result);

return toBase64;
}

我在获取有效的 Base64 字符串时遇到了一些问题,所以现在我正在使用它

  function _arrayBufferToBase64( buffer ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return window.btoa( binary );
}

结果看起来比 iPad 和 .net 服务生成的输出要短一些,但我不知道这是否意味着什么。

解密总是失败,并显示错误“解码 OAEP 填充时发生错误。”,这告诉我解密在第一步失败。

我做错了什么吗?任何意见将是有益的。我会在一天的大部分时间里查看评论和回复,以便在您需要时提供额外的信息。

提前致谢

CodeSandbox.io demo

最佳答案

出现问题的原因是在 C# 代码中 SHA-1(隐式)用于 OAEP以及 JavaScript/Node.js 代码 SHA-256。

RSACryptoServiceProvider仅支持 PKCS#1 v1.5-padding 和具有 SHA-1 的 OAEP。仅支持 SHA-2 的 OAEP为较新的 RSA 实现而实现,RSACng (自 .NET 4.6 起可用),属于新的 Cryptography API (Next Generation) .

由于您无法根据自己的声明更改 C# 代码,因此只能将 JavaScript/Node.js 代码中的哈希值从 SHA-256 更改为 SHA-1。

关于node.js - 我如何使用 OAEP 对 RSACryptoServiceProvider (.net) 解密进行错误的 : SubtleCrypto (Node. js) 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com