3
I’m trying to learn how to use encryption to encrypt and decrypt messages.
I’m with a class called Encripta
which has the methods, the encryption works perfectly.
My method of deciphering cryptography decrypt
, returns the following log:
"V/Decrypted: android.support.v7.widget.Appcompatedittext{41766b38 VFED.. CL .F...... 32,344-688,435 #7f0c0052 app:id/txtMensage}"
I’ll post my class Main
and the class Encripta
.
If you can tell me what I’m missing, I’m waiting( I took the code here from the same stack, and I’m using the base in the project).
Encryption
package gastecnologia.com.br.ltcrypt;
import android.util.Base64;
import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
* Created by thiago.goncalves on 22/02/2016.
*/
public class Encripta {
private final Cipher cipher;
private final SecretKeySpec key;
private AlgorithmParameterSpec spec;
public static final String SEED_16_CHARACTER = "U1MjU1M0FDOUZ.Qz";
public Encripta() throws Exception {
// hash password with SHA-256 and crop the output to 128-bit for key
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(SEED_16_CHARACTER.getBytes("UTF-8"));
byte[] keyBytes = new byte[32];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
key = new SecretKeySpec(keyBytes, "AES");
spec = getIV();
}
public AlgorithmParameterSpec getIV() {
byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
IvParameterSpec ivParameterSpec;
ivParameterSpec = new IvParameterSpec(iv);
return ivParameterSpec;
}
public String encrypt(String plainText) throws Exception {
cipher.init(Cipher.ENCRYPT_MODE, key, spec);
byte[] encrypted = cipher.doFinal(plainText.getBytes("UTF-8"));
String encryptedText = new String(Base64.encode(encrypted,
Base64.DEFAULT), "UTF-8");
return encryptedText;
}
public String decrypt(String cryptedText) throws Exception {
cipher.init(Cipher.DECRYPT_MODE, key, spec);
byte[] bytes = Base64.decode(cryptedText, Base64.DEFAULT);
byte[] decrypted = cipher.doFinal(bytes);
String decryptedText = new String(decrypted, "UTF-8");
return decryptedText;
}
}
package gastecnologia.com.br.ltcrypt;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
String mensagemCriptografada;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnCodificar = (Button) findViewById(R.id.btnCodificar);
Button btnDecrifrar = (Button) findViewById(R.id.btnDecifrar);
Button btnLimpar = (Button) findViewById(R.id.btnLimpar);
Button btnCopiar = (Button) findViewById(R.id.btnCopiar);
final EditText txtMensagem = (EditText) findViewById(R.id.txtMensagem);
btnCodificar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("Btn codificar", "ok");
try {
Encripta encripta = new Encripta();
String codigo = encripta.encrypt(txtMensagem.toString());
Log.v("Criptografia",codigo);
txtMensagem.setText(codigo);
mensagemCriptografada = codigo;
} catch (Exception e) {
e.printStackTrace();
}
}
});
btnDecrifrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("Btn Decifrar","ok");
try {
Encripta encripta = new Encripta();
// encripta.getIV();
String codigoDecifrado = encripta.decrypt(mensagemCriptografada.toString());
Log.v("Mmg a ser Decifrada",codigoDecifrado);
Log.v("Decifrado",codigoDecifrado);
} catch (Exception e) {
e.printStackTrace();
}
}
});
btnLimpar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtMensagem.setText("");
}
});
}
}
Show Too Thiago Luiz, I ended up vacillating on a simple thing, thanks a lot for the help. It was total learning for me ... Vlw same!
– Thiago Sama
Get used to it! It’s always like this, sometimes we pay attention to the most complicated and forget the simple! It happens to everyone ! You can be sure! =)
– Thiago Luiz Domacoski
Show, very good! Thank you!
– Thiago Sama
Thiago Luiz, come again see if you can help me... Since yesterday I’m trying to put the key as fixed instead of generating it with the Secretkeyspec... Because the app it cryptographic but the intention was to be able to decrypt and vice versa on another phone and tb when opening and closing this own app. I believe that as the key ta being generated randomly or something like that, he can’t decipher when I close and open the app and paste the string q he had set before he closed and reopened.
– Thiago Sama
For other users' research purposes, could you create a new question? So more people will also help! Thanks!
– Thiago Luiz Domacoski