DSA签名 - java.security.SignatureException:签名的编码无效

时间:2014-05-31 11:51:59

标签: java dsa

我的DSA签名有问题。我的DSA代码:

public byte[] signing(String text, PrivateKey privatekey) throws Exception {
    byte[] textByte = text.getBytes();
    Signature sign = Signature.getInstance("DSA");
    sign.initSign(privatekey);
    sign.update(textByte);
    return sign.sign();
}

public boolean verify(String text, byte[] signature, PublicKey publickey) throws Exception {
    byte[] textByte = text.getBytes();
    Signature sign = Signature.getInstance("DSA");
    sign.initVerify(publickey);
    sign.update(textByte);  
    return sign.verify(signature);
}

我按下按钮动作:

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String message = jTextArea1.getText();
    try {
        signed = dsa.signing(message, privKey);
    } catch (Exception ex) {
        Logger.getLogger(DSAFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
    String signedString = new String(signed);
    jTextArea2.setText(signedString);
}

private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String signedString = jTextArea1.getText();
    signToVer = jTextArea2.getText().getBytes();
    try {
        boolean correct = dsa.verify(signedString, signToVer, pubKey);
        if(correct == true) {
            JOptionPane.showMessageDialog(this, "Podpis poprawny", "Sukces", JOptionPane.INFORMATION_MESSAGE);
        } else {
            JOptionPane.showMessageDialog(this, "Podpis niepoprawny", "Błąd", JOptionPane.ERROR_MESSAGE);
        }
    } catch (Exception ex) {
        Logger.getLogger(DSAFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}  

当我想要验证签名时,它会给我一个java.security.SignatureException: invalid encoding for signature。我认为,转换字符串到字节数组和返回是一个问题。但我不知道如何让它发挥作用。

0 个答案:

没有答案