第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 RSA512 算法創(chuàng)建簽名的 JWT

如何使用 RSA512 算法創(chuàng)建簽名的 JWT

不負(fù)相思意 2023-03-17 13:49:17
我試圖創(chuàng)建 JWT(“JOT”)令牌以使我的 api 調(diào)用真實(shí)。每當(dāng)我嘗試使用 RSA512 簽名創(chuàng)建令牌時(shí),我都會(huì)收到一條錯(cuò)誤消息java.lang.IllegalArgumentException:必須使用 RSA 私鑰計(jì)算 RSA 簽名。類型為 javax.crypto.spec.SecretKeySpec 的指定密鑰不是 RSA 私鑰。我正在使用以下代碼: SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RS512; long nowMillis = System.currentTimeMillis();  Date now = new Date(nowMillis); byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(SECRET_KEY); Key signingKey = new SecretKeySpec(apiKeySecretBytes,                 signatureAlgorithm.getJcaName());   JwtBuilder builder = Jwts.builder().claim("uuid",     id).setIssuedAt(now).setExpiration(new Date(600000))    .signWith(signatureAlgorithm, signingKey);注意:我的“SECRET_KEY”是一個(gè)字符串,是網(wǎng)上隨機(jī)生成的私鑰。我的問題是如何從使用 RSA 密鑰大小編碼為 4096 的字符串中獲取密鑰對(duì)象。4096 因?yàn)槲沂褂玫氖?RSA512 加密,建議對(duì) RSA512 使用 4096 密鑰
查看完整描述

1 回答

?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

最初我沒有提供 Base64 編碼的 RSAkey ,我將它再次編碼為 base64 ,這就是我收到此錯(cuò)誤的原因。


java.lang.IllegalArgumentException:必須使用 RSA 私鑰計(jì)算 RSA 簽名。類型為 javax.crypto.spec.SecretKeySpec 的指定密鑰不是 RSA 私鑰。


每當(dāng)我提供 RSAKey base 64 編碼或字節(jié)碼私鑰時(shí),我都會(huì)回到錯(cuò)誤之下


只能為 HMAC 簽名指定 Base64 編碼的密鑰字節(jié)。如果使用 RSA 或橢圓曲線,請改用 signWith(SignatureAlgorithm, Key) 方法。


當(dāng)我提供私鑰的字符串/字節(jié)時(shí),它一直在檢查 HMAC 算法。請參閱 JWTBuilder 中的以下代碼。


@Override

public JwtBuilder signWith(SignatureAlgorithm alg, byte[] secretKey) {

    Assert.notNull(alg, "SignatureAlgorithm cannot be null.");

    Assert.notEmpty(secretKey, "secret key byte array cannot be null or empty.");

    Assert.isTrue(alg.isHmac(), "Key bytes may only be specified for HMAC signatures.  If using RSA or Elliptic Curve, use the signWith(SignatureAlgorithm, Key) method instead.");

    this.algorithm = alg;

    this.keyBytes = secretKey;

    return this;

}


@Override

public JwtBuilder signWith(SignatureAlgorithm alg, String base64EncodedSecretKey) {

    Assert.hasText(base64EncodedSecretKey, "base64-encoded secret key cannot be null or empty.");

    Assert.isTrue(alg.isHmac(), "Base64-encoded key bytes may only be specified for HMAC signatures.  If using RSA or Elliptic Curve, use the signWith(SignatureAlgorithm, Key) method instead.");

    byte[] bytes = TextCodec.BASE64.decode(base64EncodedSecretKey);

    return signWith(alg, bytes);

}


@Override

public JwtBuilder signWith(SignatureAlgorithm alg, Key key) {

    Assert.notNull(alg, "SignatureAlgorithm cannot be null.");

    Assert.notNull(key, "Key argument cannot be null.");

    this.algorithm = alg;

    this.key = key;

    return this;

}

提供 java.security.key 類型的私鑰并且必須是 RSA 密鑰總是最好的主意。我使用 P12 證書加載私鑰。


查看完整回答
反對(duì) 回復(fù) 2023-03-17
  • 1 回答
  • 0 關(guān)注
  • 249 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)