Ich denke, ich vermisse etwas, ich glaube, das Bild (in Bytes konvertiert) wird verschlüsselt, aber nicht entschlüsselt, wenn es auf der Client-Seite ankommt. Das Bild scheint die Überprüfung der RSA-Signatur zu bestehen, aber irgendwie kann es nicht angezeigt werden.Android rc4 Verschlüsselung
Client Side-Code:
public void aliceEncrypt(byte[] plaintext, byte[] sharedSecret) {
Cipher cipher;
byte[] encrypted = null;
try {
cipher = Cipher.getInstance("RC4");
Key sk = new SecretKeySpec(sharedSecret, "RC4");
cipher.init(Cipher.ENCRYPT_MODE, sk);
encrypted = cipher.doFinal(plaintext);
CipherOutputStream cos = new CipherOutputStream(socket.getOutputStream(), cipher);
ObjectOutputStream oos = new ObjectOutputStream(cos);
oos.writeObject(encrypted);
oos.flush();
} catch (NoSuchAlgorithmException | NoSuchPaddingException | IOException | InvalidKeyException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
}
Server Side-Code:
public byte[] bobDecrypt(byte[] sharedSecret) {
Cipher cipher = null;
byte[] bytes = null;
byte[] decrypted = null;
try {
cipher = Cipher.getInstance("RC4");
Key sk = new SecretKeySpec(sharedSecret, "RC4");
cipher.init(Cipher.DECRYPT_MODE, sk);
CipherInputStream cis = new CipherInputStream(socket.getInputStream(), cipher);
ObjectInputStream ois = new ObjectInputStream(cis);
bytes = (byte[])ois.readObject();
decrypted = cipher.doFinal(bytes);
} catch (NoSuchAlgorithmException | NoSuchPaddingException | IOException | InvalidKeyException | ClassNotFoundException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
return decrypted;
}
Ich glaube nicht, dass diese für RC4 existieren, bitte korrigieren Sie mich, wenn ich falsch bin. RC4 ist eine Stromchiffre, keine Notwendigkeit zum Auffüllen. – Melo
Ich habe das nicht verstanden, Sie schlagen vor, ich entferne cipher.doFinal()? Werden die Daten noch verschlüsselt? – Melo
Ok du hast meine Verwirrung beseitigt, es funktioniert, danke Kumpel. Ich war mir nicht sicher, ob ich das cipher.doFinal weglassen kann. Sie können Ihre Antwort strukturieren und ich werde sie akzeptieren. – Melo