问题标签 [rsa-sha256]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1963 浏览

java - java和auth0:令牌签名无效异常

我正在尝试在 java 中验证 jwt,我使用了与这篇文章类似的代码:Java - Auth0 JWT Verification - 这是正确的吗?

但我收到错误:com.auth0.jwt.exceptions.SignatureVerificationException:使用算法验证时令牌的签名无效:SHA256withRSA我也看过这篇文章:com.auth0.jwt.exceptions.SignatureVerificationException:令牌的签名导致无效使用算法验证时:SHA256withRSA但我没有使用 HMAC256。

虽然我可以得到 jwt:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjNDM5MmMxMDA1MGJiN2E2MDYwMTVlMTk0MTNkOWMxIiwidHlwIjoiSldUIn0.eyJuYmYiOjE1NzE2NTU3NzEsImV4cCI6MTU3MTY4NDU3MSwiaXNzIjoiaHR0cDovLzE5Mi4xNjguMTAwLjEwMTo1MDU1IiwiYXVkIjpbImh0dHA6Ly8xOTIuMTY4LjEwMC4​​xMDE6NTA1NS9yZXNvdXJjZXMiLCJjbGFpbXNhcGkiXSwiY2xpZW50X2lkIjoicm8udGVzdGNsaWVudCIsInN1YiI6IjEiLCJhdXRoX3RpbWUiOjE1NzE2NTU3NzEsImlkcCI6ImxvY2FsIiwic2NvcGUiOlsib2ZmaWNlIiwib3BlbmlkIiwicHJvZmlsZSIsImNsYWltc2FwaSJdLCJhbXIiOlsicHdkIl19.oK4Cg2laKUgdAHpyZ3yB7bVlgdHevhkzQMn47wnQPbvc04GME90wXScHxTSNkgtTPnuXK_t-ddyPYrxOZFnHPfDr9PLTjDXilLF90Ga91a4khFvRqvTqRwXAnpsamAsBdXZoybkbQ8c_x7kPua5NwN13AJU_cL37tSuor4ujYIJ9McLdQDLIBhD7b76QAMF2UkstFG_oPUSwycot-18zuaB97K4b5X-rO-j2DfEy15caRmMGxX-1c4EMw4T4pxHkQc4WVumA0C2nsCufJ1ZyZ74bcebRTTbb9y__QDvekGa1vfUYG6Pon7q83gQVWiH580vwiH60rrICjl9fNK4hmQ

我无法访问私钥以检查jwt.io上的签名,因为它保存在不受我控制的身份服务器实例上,但是由于我对 oauth 的了解有限,我认为这不是问题。

0 投票
0 回答
260 浏览

php - PHP OAuth 2.0 JWT 不记名令牌流

我正在尝试从 Salesforce 获取 JWT 不记名令牌。我正在尝试遵循他们的文档,但没有成功。 https://help.salesforce.com/articleView?id=remoteaccess_oauth_jwt_flow.htm&type=5

我得到的回报是 {"error":"invalid_grant","error_description":"invalid assertion"}

这是我的代码,不确定这有什么问题。需要帮助以尝试返回不记名令牌。

谢谢您,感谢您的帮助。

0 投票
1 回答
891 浏览

powershell - 如何在 Powershell 中对字符串进行 hash256 和数字签名(使用私钥)

使用 openssl 我生成了一个私钥(比如说 httpCert.key)和一个自签名证书。现在,我有一个我想要 hash256 的字符串,用我的私钥即 httpCert.key 进行数字签名并进行 base64 编码。

我可以使用 openssl 在 bash 中完成这一切,如下所示:

但是在Powershell中努力寻找一种方法来做到这一点。

根据其他帖子的帮助,我可以进行简单的哈希和编码,如下所示:

但不确定如何使用私钥对 hash256 进行签名。我尝试使用“System.Security.Cryptography.RSACryptoServiceProvider”,但无法正常工作。

0 投票
1 回答
417 浏览

.net-core - .Net Core 中的等效 SecurityAlgorithmSuite

我正在将一个项目从 .Net framework 4.8 迁移到 .Net Core 3.1。

问题是这个Basic256算法与Net Core不兼容

你知道任何等效的库吗?

0 投票
1 回答
519 浏览

c# - 无法使用公钥 C# 验证签名数据

我有一个应用程序需要对某些数据进行签名,然后确认签名有效。要使用的算法是 RSA SHA 256。我在 Windows 证书存储区中有一个证书及其各自的私钥。我在几篇文章中进行了搜索,并以此为基础。我创建签名没有问题。我的问题是,当尝试使用公钥确认签名是否有效时,VerifyData 方法返回 False。我没有很多使用 C# 和加密的经验,我看不出这段代码有什么问题。不幸的是,我正在使用旧框架(4.5)

我什至已经这样做了(直接加载.cer文件)并且响应是一样的

我真的很感谢你的支持

0 投票
0 回答
1374 浏览

java - How to get private key from jks keystore for signing the message with privatekey using shal256rsa in java

I want to encrypt the message with signed private key.and verify the signature but getting error in verify signature

//importing the crt and key into p12 file and importing into jks file

openssl pkcs12 -export -in D:\cedge_uat\STAR_cedgenetbanking_in.crt -inkey D:\cedge_uat\newcedgenetbanking251920.key -name cedge1 -out D:\cedge_uat\convertedfile1.p12

keytool -importkeystore -deststorepass cedge1 -destkeystore newkeystore.jks -srckeystore D:\cedge_uat\convertedfile1.p12 -srcstoretype PKCS12

Getting below response:

privateKey--sun.security.rsa.RSAPrivateCrtKeyImpl@ffe594cb privateKey=sun.security.rsa.RSAPrivateCrtKeyImpl@ffe594cb Signature=QtFcvROXmFb+SIqi/sFG5BXtMviidqWYP0ae/Z0PQNKbxYg9LiJMAqjU+XB+V7awkpVpeV8/TmrxO2AFi1hDLOOOdL4rVY1xxPTGw77Q==

publicKey=Sun RSA public key, 2048 bits modulus: 2170304779081185713374867545321744099657549785541087943424133659953554520622568213352873219823464920874049569111847413669517192082390131 public exponent: 65537 Exception in thread "main" java.lang.IllegalArgumentException: Last unit does not have enough valid bits at java.util.Base64$Decoder.decode0(Unknown Source)

0 投票
1 回答
1928 浏览

node.js - 在 Node.js 中使用私钥和“带有 RSA 的 SHA256”算法生成签名

我们的系统将调用带有身份验证服务器的 API。这个服务器是用java构建的,需要大量的密钥加密。一个要求是使用“带有 RSA 的 SHA256”算法生成带有客户(是我们)私钥的签名。我已经在 J​​ava 中做到了这一点,但不确定它是否正确。Rur 服务器是用 Nodejs 编写的。如何将下面的 Java 代码翻译成 Node.js?

0 投票
1 回答
2447 浏览

c# - 使用公钥解密 RSA-SHA256 所需的 C# 代码

我需要帮助来实施 EWP(https://developers.erasmuswithoutpaper.eu/)。我已经设置了一些 API 并使用 EWP 的在线验证器工具来测试它们。现在一切正常,除了一件事:签名验证。

我有几种方法可以通过请求标头检查它们是否有效。唯一剩下的方法是验证签名。我已经实现了日志记录,并且有一个有效的签名以及我应该用来解密它的公钥,但是无论我尝试什么,我都没有从中得到任何可用的价值。

我收到的签名是:

使用我在请求中收到的 keyId,可以在 EWP 管理的 xml 文件中找到公钥。由于我可以通过 keyId 找到公钥,因此我确信它是正确的:

现在我需要只用这个公钥解密签名(它是用与这个公钥匹配的私钥加密的),结果应该是一个签名字符串,如下所示:

EWP 文档指出签名的形成方式如下:signature="Base64(RSA-SHA256(signing string))

谁能告诉我用这个公钥解密这个签名的代码,导致上面的签名字符串?(或至少类似的东西)我已经为此苦苦挣扎了很长时间......

编辑:所以我知道不可能从签名和公钥中获取原始消息,而只能从原始消息生成一个散列,我应该重现该散列以查看它是否匹配。对我来说好吧,我有这样做所需的所有数据,只是没有工作代码来获得匹配。

有关 EWP 使用的标准的更多文档:

https://github.com/erasmus-without-paper/ewp-specs-sec-cliauth-httpsig/tree/v1.0.1 https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures -07#section-2.5

关于我使用的测试数据:我在我的 API 中实现了很多日志记录以进行测试,这些只是我从官方 EWP 在线验证器收到的值。签名直接来自请求,公钥在 EWP 注册表 xml 中找到。我自己创建的唯一东西是签名字符串,如下所述:https ://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-07#section-3.1.2

我的代码经过更多测试(requestContext.ClientPublicKey 是完整的字符串 MIIBIj...IDAQAB):

Edit2:我在日志中发现了一个工作测试!但是,奇怪的是,它只工作了一次......我可以用这些相同的数据重现成功的验证:

但是在我的 API 中,使用新数据、其他 keyId、公钥、签名字符串和签名,它又失败了……这怎么可能?

0 投票
1 回答
356 浏览

openssl - 在 PHP 中验证 RSA-SHA256 xml(在 .NET 中登录并在 PHP 中验证)

我收到 XML 请求,包含 MsgBody 标记和签名(在.net中完成的签名过程),

我必须验证他们发送的 msg 正文、签名和请求者公钥,但我不能。

我的代码是:

我试过这个:

两种方式的 $verifying_flag 失败,

通过此代码在 .NET 中完成的签名过程:

如何验证他们的要求?!

0 投票
1 回答
350 浏览

c# - RSA-SHA256 签名不匹配

我正在研究 EWP(没有论文的 Erasmus)的实现,这是一组用于世界各地大学之间通信的 API。每个调用都必须使用 RSA-SHA256 进行签名。每个合作伙伴都有一个私钥和公钥,公钥在带有 keyId 的注册表中可用。请求有一些标头:正文的摘要(sha256 哈希)、主机、日期、x-request-id(随机 guid)。这些标头及其值连接在一个签名字符串中,该字符串使用私钥进行签名,结果是也在标头中发送的签名,以及用于签名的 keyId 和其他标头。服务器需要检查签名是否有效,方法是创建相同的签名字符串,在注册表中查找公钥,然后检查请求中的签名是否确实正确。

我有两个 API 作为我用来测试的客户端应用程序。我可以访问 109 个不同的合作伙伴进行测试,其中一些还没有准备好(他们在我的客户端和在线验证器中都显示了一个错误,所以我假设那个 API 服务器端有一个错误,因为它是一个开发环境),其他人工作正常。还有一个 EWP 的测试 API,还有一个在线验证器,您可以使用它来向这些 API 中的任何一个发送请求。

奇怪的是,我的客户几乎可以使用所有合作伙伴 API,而其中一些给我一个错误,我的签名是错误的(当在线验证器工作正常时)。在我自己的 API 上使用我的客户端,验证工作正常。使用在线验证器,我的验证不起作用(无效签名错误)。有 2 个合作伙伴,我的客户端不工作而在线验证器工作,以及 3 个 API,我的客户工作但在线验证器不工作(包括我自己的 API)

谁能想到可能导致这些问题的任何事情?奇怪的是,2 周前,在线验证器确实在我的 API 上工作,而根据 EWP 人的说法,唯一改变的是在线验证器使用的密钥对,但他声称我现在使用的是正确的密钥对(我给他发了我的日志)

会不会是某种字符集问题?仅当在公钥中使用某些字符或类似的东西时才会发生错误?

这是我的 RSA-SHA256 部分的代码:

使用私钥在客户端请求中创建签名:

检查接收到的签名是否正确:

所以,长话短说:上面的代码有时工作正常,有时失败。为什么哦为什么?