samsung que para lock instalacion huella ejecutan con como bloqueo bloquear app aplicaciones java sockets encryption network-programming aes

java - para - Bloqueos de aplicaciones al crear secuencias de cifrado desde el socket



como bloquear aplicaciones en samsung (1)

Tengo problemas para cifrar y descifrar mis transmisiones entre dos sockets.

ObjectInputStream oIn = new ObjectInputStream(new FileInputStream(new File("key"))); SecretKeySpec spec = (SecretKeySpec) oIn.readObject(); //''key'' file was saved previously Cipher cEncrypt = Cipher.getInstance("AES"); cEncrypt.init(Cipher.ENCRYPT_MODE, spec); Cipher cDecrypt = Cipher.getInstance("AES"); cDecrypt.init(Cipher.DECRYPT_MODE, spec); //should have no problems here, I tried the ciphers out by encoding and decoding a String, works fine ObjectOutputStream objectOutputStream= new ObjectOutputStream(new CipherOutputStream(socket.getOutputStream,cEncrypt)); objectOutputStream.flush(); ObjectInputStream objectInputStream = new ObjectInputStream(new CipherInputStream(socket.getInputStream,cDecrypt));

Entonces, el programa se detiene. El código es el mismo en ambos lados del zócalo. Sin utilizar flujos cifrados, el programa transfiere datos correctamente.

Cualquier ayuda es muy apreciada, ¡gracias!


Ver CipherOutputStream.flush() :

Los bytes almacenados en búfer por el cifrado encapsulado y en espera de ser procesados ​​por él no se escribirán. Por ejemplo, si el cifrado encapsulado es un cifrado de bloque, y el número total de bytes escritos utilizando uno de los métodos de escritura es menor que el tamaño de bloque del cifrado, no se escribirán los bytes.

Básicamente, sus datos solo se pueden escribir en fragmentos de 16 bytes porque está utilizando un cifrado de bloques como ECB o CBC. Puede evitar este problema utilizando un cifrado de flujo . Ver modos de operación de cifras de bloque para más detalles. Deberá seleccionar CFB, OFB o CTR. Por ejemplo, cuando obtiene su instancia de Cipher :

Cipher cipher = Cipher.getInstance("AES/CTR/PKCS5Padding");