Je suis en train de chiffrer des données binaires en Java avec une clé publique tel que décrit sur cette page utile: http://www.junkheap.net/content/public_key_encryption_javaMon CipherOutputStream échoue silencieusement
Comme dirigé par la page, je crée des clés publiques et privées à l'aide des commandes :
openssl genrsa -aes256 -out private.pem 2048
openssl rsa -in private.pem -pubout -outform DER -out public.der
maintenant, je chiffrer enregistrer des données avec un petit programme:
public class Rsa {
public static void main(String[] args) throws Exception, IOException {
File keyFile = new File("public.der");
byte[] encodedKey = new byte[(int) keyFile.length()];
new FileInputStream(keyFile).read(encodedKey);
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(encodedKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey pk = kf.generatePublic(publicKeySpec);
Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, pk);
FileOutputStream fileOutputStream = new FileOutputStream(
"encrypted.rsa");
OutputStream os = new CipherOutputStream(fileOutputStream, rsa);
byte[] raw = new byte[245];
raw[0] = 4;
os.write(raw);
os.flush();
os.close();
}
}
Le code ci-dessus fonctionne, mais wh fr Je change la taille du tableau d'octets en 246, cela produit un fichier de longueur nulle!
Qu'est-ce que je fais mal?
Merci Greg - J'aurais aimé le savoir il y a 4 heures! – Mark