使用PEM编码的加密私钥对本机签名

使用PEM编码的加密私钥对本机签名,第1张

使用PEM编码加密私钥对本机签名

如果您使用的是BouncyCastle,请尝试以下 *** 作:

import java.io.File;import java.io.FileReader;import java.io.IOException;import java.security.KeyPair;import java.security.Security;import java.security.Signature;import java.util.Arrays;import org.bouncycastle.jce.provider.BouncyCastleProvider;import org.bouncycastle.openssl.PEMReader;import org.bouncycastle.openssl.PasswordFinder;import org.bouncycastle.util.enprers.Hex;public class SignatureExample {    public static void main(String [] args) throws Exception {        Security.addProvider(new BouncyCastleProvider());        String message = "hello world";        File privateKey = new File("private.pem");        KeyPair keyPair = readKeyPair(privateKey, "password".toCharArray());        Signature signature = Signature.getInstance("SHA256WithRSAEncryption");        signature.initSign(keyPair.getPrivate());        signature.update(message.getBytes());        byte [] signatureBytes = signature.sign();        System.out.println(new String(Hex.enpre(signatureBytes)));        Signature verifier = Signature.getInstance("SHA256WithRSAEncryption");        verifier.initVerify(keyPair.getPublic());        verifier.update(message.getBytes());        if (verifier.verify(signatureBytes)) { System.out.println("Signature is valid");        } else { System.out.println("Signature is invalid");        }    }    private static KeyPair readKeyPair(File privateKey, char [] keyPassword) throws IOException {        FileReader fileReader = new FileReader(privateKey);        PEMReader r = new PEMReader(fileReader, new DefaultPasswordFinder(keyPassword));        try { return (KeyPair) r.readObject();        } catch (IOException ex) { throw new IOException("The private key could not be decrypted", ex);        } finally { r.close(); fileReader.close();        }    }    private static class DefaultPasswordFinder implements PasswordFinder {        private final char [] password;        private DefaultPasswordFinder(char [] password) { this.password = password;        }        @Override        public char[] getPassword() { return Arrays.copyOf(password, password.length);        }    } }


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5130241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存