зеркало из
https://github.com/iharh/notes.git
synced 2025-10-30 05:06:05 +02:00
37 строки
1.6 KiB
Plaintext
37 строки
1.6 KiB
Plaintext
// load pub-key from file
|
|
FileInputStream fis = new FileInputStream("public.pem");
|
|
BufferedInputStream bis = new BufferedInputStream(fis);
|
|
DataInputStream dis = new DataInputStream(bis);
|
|
byte[] keyBytes = new byte[dis.available()];
|
|
dis.readFully(keyBytes);
|
|
dis.close();
|
|
|
|
// transform bytes to PublicKey object
|
|
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
|
|
KeyFactory kf = KeyFactory.getInstance("RSA");
|
|
PublicKey publicKey = kf.generatePublic(spec);
|
|
|
|
private static String encrypt(RSAPrivateKey key, String algorithm, String input) throws Exception {
|
|
// https://docs.oracle.com/en/java/javase/21/docs/api/java.base/javax/crypto/Cipher.html
|
|
// https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/spec/AlgorithmParameterSpec.html
|
|
Cipher cipher = Cipher.getInstance(algorithm);
|
|
|
|
// Initializes this {@code Cipher} object with a key.
|
|
// *
|
|
// * <p>The {@code Cipher} object is initialized for one of the following four
|
|
// * operations:
|
|
// * encryption, decryption, key wrapping or key unwrapping, depending
|
|
// * on the value of {@code opmode}.
|
|
cipher.init(Cipher.ENCRYPT_MODE, key);
|
|
byte[] cipherText = cipher.doFinal(input.getBytes());
|
|
return encoder.encodeToString(cipherText);
|
|
}
|
|
|
|
private static String sign(RSAPrivateKey key, String input) throws Exception {
|
|
var privateSignature = Signature.getInstance("SHA256withRSA");
|
|
privateSignature.initSign(key);
|
|
privateSignature.update(input.getBytes());
|
|
byte[] signature = privateSignature.sign();
|
|
return encoder.encodeToString(signature);
|
|
}
|