Hallo!
Da ich im unterforum "Mobile Geräte" keine Antwort bekomme, versuche ich es jetzt mal hier.
Ich möchte in einer App einen Text mit AES ver/entschlüsseln.
Meine AES Methoden funktionieren mit Swing und JFrame wunderbar.
jetzt habe ich die Methoden in meine Activits.java kopiert und ich bekomme angezeigt dass BASE64.getEncoder() und BASE64.Decoder() undifeniert für die Klasse BASE64 sind.
Allerdings wird unter android BASE64 auch nicht mehr mittels
java.util.BASE64 importiert sondern mit android.util.BASE64.
Ich nutzte außerdem Android 4.0.3 für die Entwicklung. kann es vielleicht sein, dass es da noch nicht verfügbar ist?
Bitte dringend um Hilfe!
Code: mit JFrame - So funktioniert es
Code: in der Android Activity - so funktioniert es nicht
Da ich im unterforum "Mobile Geräte" keine Antwort bekomme, versuche ich es jetzt mal hier.
Ich möchte in einer App einen Text mit AES ver/entschlüsseln.
Meine AES Methoden funktionieren mit Swing und JFrame wunderbar.
jetzt habe ich die Methoden in meine Activits.java kopiert und ich bekomme angezeigt dass BASE64.getEncoder() und BASE64.Decoder() undifeniert für die Klasse BASE64 sind.
Allerdings wird unter android BASE64 auch nicht mehr mittels
java.util.BASE64 importiert sondern mit android.util.BASE64.
Ich nutzte außerdem Android 4.0.3 für die Entwicklung. kann es vielleicht sein, dass es da noch nicht verfügbar ist?
Bitte dringend um Hilfe!
Code: mit JFrame - So funktioniert es
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class AES extends JFrame {
private static SecretKeySpec secretKey;
private static byte[] key;
private JButton button;
private JTextField eingabe;
private JTextField schluessel;
private JTextField ausgabe;
AES() {
setSize(300, 300);
setLayout(null);
eingabe = new JTextField();
eingabe.setBounds(10, 10, 200, 20);
schluessel = new JTextField();
schluessel.setBounds(10, 40, 200, 20);
ausgabe = new JTextField();
ausgabe.setBounds(10, 100, 200, 20);
button = new JButton("Ver/Entschlüsseln");
button.setBounds(10, 70, 200, 20);
getContentPane().add(eingabe);
getContentPane().add(schluessel);
getContentPane().add(ausgabe);
getContentPane().add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String originalString = eingabe.getText();
final String secretKey = schluessel.getText();
ausgabe.setText(encrypt(originalString, secretKey));
}
});
setVisible(true);
}
public static void main(String[] args)
{
new AES();
}
public void startCrypt() {
final String secretKey = "ssshhhhhhhhhhh!!!!";
String originalString = "howtodoinjava.com";
String encryptedString = AES.encrypt(originalString, secretKey) ;
String decryptedString = AES.decrypt(encryptedString, secretKey) ;
System.out.println(originalString);
System.out.println(encryptedString);
System.out.println(decryptedString);
}
public static void setKey(String myKey) {
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(String strToEncrypt, String secret) {
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
catch (Exception e)
{
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
public static String decrypt(String strToDecrypt, String secret)
{
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
}
catch (Exception e)
{
System.out.println("Error while decrypting: " + e.toString());
}
return null;
}
}
Code: in der Android Activity - so funktioniert es nicht
Java:
package com.luca.app.lutextrypt;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Random;
import java.util.concurrent.AbstractExecutorService;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import android.sax.TextElementListener;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Base64;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import Decoder.BASE64Decoder;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
public class AesActivity extends ActionBarActivity implements OnClickListener{
private EditText edittext_eingabe;
private EditText edittext_ausgabe;
private EditText edittext_schluessel;
private Button btn_generieren;
private Button btn_verschluesseln;
private Button btn_entschluesseln;
private static SecretKeySpec secretKey;
private static byte[] key;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aes);
initKomponenten();
}
private void initKomponenten() {
edittext_eingabe = (EditText) findViewById(R.id.EditText01);
edittext_ausgabe = (EditText) findViewById(R.id.editText1);
edittext_schluessel = (EditText) findViewById(R.id.editText2);
btn_generieren = (Button) findViewById(R.id.button1);
btn_generieren.setOnClickListener(this);
btn_verschluesseln = (Button) findViewById(R.id.Button01);
btn_verschluesseln.setOnClickListener(this);
btn_entschluesseln = (Button) findViewById(R.id.Button02);
btn_entschluesseln.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.button1) {
edittext_schluessel.setText(zufallsGen());
} else if (v.getId() == R.id.Button01) {
}
}
//Zufallspasswort
public String zufallsGen() {
Random zufall = new Random();
String text = "";
int länge = zufall.nextInt(25)+8;
for(int i = 0; i<=länge; i++) {
char zeichen = (char)(zufall.nextInt(129)+1);
text = (text + zeichen);
}
return text;
}
//AES Ver- udn Entschlüsselung aus String
public void startCrypt() {
final String secretKey = "ssshhhhhhhhhhh!!!!";
String originalString = "howtodoinjava.com";
String encryptedString = encrypt(originalString, secretKey) ;
String decryptedString = decrypt(encryptedString, secretKey) ;
System.out.println(originalString);
System.out.println(encryptedString);
System.out.println(decryptedString);
}
public static void setKey(String myKey) {
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(String strToEncrypt, String secret) {
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
catch (Exception e)
{
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
public static String decrypt(String strToDecrypt, String secret)
{
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
}
catch (Exception e)
{
System.out.println("Error while decrypting: " + e.toString());
}
return null;
}
}