用私钥签名字符串

时间:2011-12-16 07:36:41

标签: java sign private-key

有人可以解释一下如何使用私钥对字符串或字节数组进行签名吗?请。两个星期我正在努力实现它。 我有代码:

private static byte[] createSignature(byte[] file) {
    byte[] signature = null;

    try {
        java.security.KeyStore keyStoreFile = java.security.KeyStore
                .getInstance("PKCS12");
        keyStoreFile.load(new FileInputStream("keyStore.pfx"),
                "password".toCharArray());

        // nuskaitomas privatus raktas iš failo
        PrivateKey privateKey = (PrivateKey) keyStoreFile.getKey(
                "alais", "password".toCharArray());

        Signature dsa = Signature.getInstance(SHA1withRSA);
        dsa.initSign(privateKey);
        dsa.update(file, 0, file.length);
        signature = dsa.sign();

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return signature;
}

但这只是一个签名。

2 个答案:

答案 0 :(得分:0)

更改退货签名;为此:

byte[] encryptedByteValue = Base64.encodeBase64(signature);
return new String(encryptedByteValue, "UTF-8");

答案 1 :(得分:0)

使用代码示例生成输入数据的签名。

如果您还希望以加密形式返回数据,则可以使用非对称(或对称)加密。

在您的情况下,您可以返回使用PrivateKey加密的数据: 你可以找到一个例子here