首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用RSA 256私钥与算法RSASSA-PKCS1-v1.5SHA-256签署JWS

用RSA 256私钥与算法RSASSA-PKCS1-v1.5SHA-256签署JWS
EN

Stack Overflow用户
提问于 2022-06-28 12:10:20
回答 1查看 381关注 0票数 0

我需要一些与RSA 256私钥签署JWS的帮助-RSASSA-PKCS1-v1.5SHA-256

我正在研究SAP PI/PO。

我无法检索保存在服务器OS文件夹中的RSA私钥,所以我

我试图将pem(base64编码)键作为字符串传递。

我的要求是生成标头和有效载荷并对其签名。

示例输入头:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"alg": "RS256","kid": "asff1233dd"}

示例Json有效载荷:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"CompInvoiceId": "0009699521","IssueDtm": "20220623"}<br />

错误:我能够在Header.payload url编码中生成base64,但是

当我将私钥转换为

PKCS8encoding。

生成的JWS如下所示:

eyJhbGciOiJSUzI1NiIsImtpZCI6Imh5d3kzaHIifQ.eyJDb21waW52b2ljZSI6IjAwOTk5MzMzI

Iwic3VibWl0SWQiOiIxMjM0NSJ9.[B@42 ace6ba]

这是被破坏的签名部分- [B@42ace6ba

请帮助编写以下代码:

这是因为这个声明byte[] signed = null,当我删除

它只是抛出

无法找到已签名变量的错误。

请帮助我通过私钥和签名。

我正在处理的Java代码:

我要通过:

Json data=数据

标头=标头

base64 = key中的私钥

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String jwsToken(String key, String data, String header, Container container) throws 
StreamTransformationException{
String tok = null;
byte[] signed = null;
try {
StringBuffer token = new StringBuffer();
//Encode the JWT Header and add it to our string to sign
token.append(Base64.getUrlEncoder().withoutPadding().encodeToString(header.getBytes("UTF- 
8")));
token.append(".");
//Encode the Json payload
token.append(Base64.getUrlEncoder().withoutPadding().encodeToString(data.getBytes("UTF-8")));
//Separate with a period
token.append(".");
//String signedPayload = 
Base64.getUrlEncoder().withoutPadding().encodeToString(signature.sign());
PrivateKey privatekey = null;
String privateKeyPEM = key;
//String key = new String(Files.readAllBytes(file.toPath()), Charset.defaultCharset());
byte[] decodePrivateKey = Base64.getDecoder().decode(key);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decodePrivateKey);
privatekey = (PrivateKey) keyFactory.generatePrivate(keySpec);
Signature sig = Signature.getInstance( "SHA256withRSA" );
sig.initSign( ( PrivateKey ) privatekey );
sig.update(token.toString().getBytes("UTF-8"));
signed=sig.sign();
tok = (token.toString());
}
catch (Exception e) {
e.printStackTrace();
}
return tok;
}
EN

回答 1

Stack Overflow用户

发布于 2022-07-21 02:01:54

与其追加字节数组,不如将其编码在base64中,然后追加它。

token.append(Base64.getUrlEncoder().withoutPadding().encodeToString(signed));=sig.sign()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72792589

复制
相关文章
Python 使用rsa类库基于RSA256算法生成JWT
JWT(Json web token),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT提供了一种简单、安全的身份认证方法,特别适合分布式站点单点登录、或者是签名。
授客
2021/07/08
1.4K0
你可能没那么了解 JWT
最近在开发一个统一认证服务,涉及到 OIDC 协议,其中授权码模式所颁发的 id_token 使用的是 JWT ( JSON Web Token ) ,因为这次使用的库的默认签名算法和以往不同,所以特地去翻阅了 JWT 的 RFC 文档( RFC 7519[1] ),一番阅读后发现原来对 JWT 的认知只停留在表面,还有更多深层的内容是不知道的。
gopher云原生
2021/11/01
1.2K0
RSA的公钥私钥
非对称加密使用的是RSA算法,所谓的非对称,指的是,加密时使用的秘钥和解密时使用的秘钥是不一样的。也就是说RSA有一对秘钥,其中一个是公钥,另一个是私钥,一个用于加密,一个用于解密。
赵哥窟
2022/04/02
2.5K0
RSA的公钥私钥
JWT(java web token)
tomcat session活化技术,关闭后会把session序列化存储本地文件,启动时加载
P轴
2022/11/18
8050
JWT详解「建议收藏」
这种基于token的认证方式相比传统的session认证方式更节约服务器资源,并且对移动端和分布式更加友好。其优点如下:
全栈程序员站长
2022/08/25
1.4K0
JWT详解「建议收藏」
golang使用JWX进行认证和加密
最近看了一个名为go-auth的库,它将JWT作为HTTP cookie对用户进行验证,但这个例子中缺少了对JWT的保护,由此进行了一些针对JWX的研究。
charlieroro
2023/02/25
1.1K0
JWT介绍及其安全性分析
JWT(JSON Web令牌)是REST API中经常使用的一种机制,可以在流行的标准(例如OpenID Connect)中找到它,但是有时也会使用OAuth2遇到它。有许多支持JWT的库,该标准本身具有“对加密机制的丰富支持”,但是这一切是否意味着JWT本质上是安全的?
FB客服
2019/11/15
3.9K0
PHPJWS签名: 什么是JWS签名如何在PHP中实现JWS签名
在现代网络应用程序中,安全性是至关重要的。为了保证数据的安全,我们需要使用各种方法来加密和验证数据。JWS(JSON Web Signature)就是这样一种方法,它使用 JSON 格式来加密和验证数据。
用户10354340
2023/07/26
3950
听说你的JWT库用起来特别扭,推荐这款贼好用的!
nimbus-jose-jwt是最受欢迎的JWT开源库,基于Apache 2.0开源协议,支持所有标准的签名(JWS)和加密(JWE)算法。
macrozheng
2020/07/09
2.3K0
听说你的JWT库用起来特别扭,推荐这款贼好用的!
RSA登录加密_rsa私钥加密公钥解密
网站:aHR0cHM6Ly9iZWlqaW5nLnR1aXR1aTk5LmNvbS9kZW5nbHUuaHRtbA==
全栈程序员站长
2022/10/02
10K0
RSA登录加密_rsa私钥加密公钥解密
安全攻防 | JWT认知与攻击
JWT是JSON web Token的缩写,它是为了在网络应用环境间传递声明而执行的一种基于JSON的开放式标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的业务逻辑所必须声明信息,该token也可被直接用于认证,也可用作加密。
安全小王子
2021/03/16
6.2K0
数字签名技术
RSA 签名算法的全称是 SHA1WithRSA:它使用的消息摘要算法是 SHA1,它使用的非对称加密算法是 RSA。RSA 签名算法对 RSA 密钥的长度不限制。推荐使用 2048 位以上(256 字节)
真正的飞鱼
2023/01/26
1.3K0
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
安全是软件开始中很重要的一个环节,在金融场景以及设计资产的场景下更是如此,在加密算法中主要使用较多加密方式分别是对称加密和非对称加密,对称加密中的代表是AES,DES,3DES等,非对称加密中使用比较多的是RSA,ECC等,最近火热的比特币中就使用ECC椭圆曲线算法,本篇文章主要是笔者在使用Golang在使用RSA中使用私钥加密公钥解密中遇到的问题,以及寻找的解决方案进行阐述,希望可以帮助到大家! 附上: 喵了个咪的博客:w-blog.cn gorsa-Github地址:https://github.c
喵了个咪233
2018/03/02
4.3K0
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
RSA公钥加密私钥解密实例
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/79966871
DannyHoo
2018/09/13
4.2K0
RSA公钥加密私钥解密实例
只知道JWT,那JWE、JWS、JWK、JWA呢?
移动端兴起和OAuth2的流行导致JWT这几年火得一塌糊涂。今天要介绍另一个规范集JOSE[1],全称Javascript Object Signing and Encryption,它和JWT有莫大的关系。
码农小胖哥
2022/04/06
1.9K0
只知道JWT,那JWE、JWS、JWK、JWA呢?
从0开始构建一个Oauth2Server服务 <19> Token 编解码
令牌提供了一种通过在令牌字符串本身中编码所有必要信息来避免将令牌存储在数据库中的方法。这样做的主要好处是 API 服务器能够验证访问令牌,而无需对每个 API 请求进行数据库查找,从而使 API 更容易扩展。
用户1418987
2023/10/16
1540
从0开始构建一个Oauth2Server服务 <19> Token 编解码
JWT、JWS与JWE
以前WEB网站认证方式都是基于传统的服务器session+浏览器cookie的Auth手段,近年来Web网站认证方式逐步转变为基于OAuth2等开放协议的SSO模式。其中Json Web Token(简称JWT) 成为当前热门的Token Auth 机制。 那么什么是JWT呢?JWT是一个轻量级的OAuth2规范,允许我们使用JWT在两个或多个组织之间安全可靠的传递数据。通俗的说JWT其实就是在易碎品外包了层气泡膜,保护数据不会被破坏和破解。 我们通常在网络上所看到的关于JWT讲解的文章大多是讲解的是JWS,因此导致需对人对JWT产生了误解,其实JWS并不是JWT,它只是JWT的一种实现方式。一般常见的JWT实现有JWS和JWE,下面我们来看一下什么是JWS和JWE。
喵叔
2022/05/06
7000
生成本地CA根证书、p12流程
安装 OpenSSL:首先,确保你的系统上安装了 OpenSSL 工具。如果尚未安装,你可以通过 Homebrew 或从 OpenSSL 官方网站下载并安装。
Raindew
2023/10/14
1.4K0
【深度知识】JSON Web令牌(JWT)的原理,流程和数据结构
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理,用法和详细的数据结构。
辉哥
2019/07/10
28.9K0
【深度知识】JSON Web令牌(JWT)的原理,流程和数据结构
使用 openssl 生成证书(含openssl详解)
openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。 官网:https://www.openssl.org/source/
菲宇
2019/06/12
16.4K0
使用 openssl 生成证书(含openssl详解)

相似问题

用AES 256加密RSA私钥

44

如何使用RSA256算法和私钥创建JWT?

124

用扩展的欧几里德算法生成RSA私钥

22

用SHA256签名与用RSA-RSA 256签名的区别

25

RSA使用SHA-256散列算法和我自己的私钥

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文