将SubjectPublicKeyInfo转换为Java PublicKey

时间:2018-11-20 17:53:45

标签: java cryptography bouncycastle

我的应用程序正在使用bouncycastle来解码比Java本地X509Certificate提供的证书更深的证书,实际上,我具有有弹性的城堡证书(org.bouncycastle.asn1.x509.Certificate)。

我的问题是如何安全地将org.bouncycastle.asn1.x509.SubjectPublicKeyInfo转换为java.security.Publickey。 ?

我想使用标准的Java签名方法java.security.Signature而不是BouncyCastle替代方法。

Signature sig = Signature.getInstance(signatureAlgorithm.getAlgorithm().getId());
        sig.initVerify(getPublicKey());
        sig.update(content);
        return sig.verify(signature);

1 个答案:

答案 0 :(得分:2)

一种转换密钥的方法是使用RSAKeyParameter和RSAPublicKeySpec使用“模数和指数”“重建”密钥。

<html>
  <head>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  </head>


 <body>
 <script type=text/javascript>
  $(function() {
    $('a#like').bind('click', function() {

      $.getJSON('/ulk', {
        p: pid
      }, function(data) {
        $("#result2").text(data.result);
      });
      return false;

    });
  });
</script>

 <br/><br/>
{% for p in posts %}

 {% if p.upvotes %}
{% set pupvotes = p.upvotes %}
{% else %}
{% set pupvotes = 0 %}
{% endif %}

 <p>{{ p.author.username }} says: <b>{{ p.body }}</b>&nbsp;
         <a href="#" id=like>
             <button id="{{ p.id }}" onclick="pid={{ p.id }};pvts = {{ pupvotes }} +1;myF1();">{{ pupvotes }} Likes</button>
         </a>
 </p>

 <script type=text/javascript>
 function myF1() {
    $( "#" + pid ).text(pvts + ' Likes');

    $('#' + pid).on('click', function() {
    $(this).prop('disabled', true);
});
 }
</script>

 {%endfor%}
<br/>
 <span id=result2>...</span>
 </body>

</html>