Methoden BASE64.getEn/Decoder nicht vorhanden

Lucaaa

Bekanntes Mitglied
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
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;
 }

}
 

Lucaaa

Bekanntes Mitglied
Weißt du wie man eine JavaDoc liest?
Nein. ich habe jetzt foldendes allerdings funktioniert die Entschlüsselung nicht, und bei der Verschlüsselung kommt immer etwas anderes raus
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.ButtonVerschluesseln);
  btn_verschluesseln.setOnClickListener(this);
  btn_entschluesseln = (Button) findViewById(R.id.ButtonEntschluesseln);
  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.ButtonVerschluesseln) {
   startEncrypt(); 
  } else if (v.getId() == R.id.ButtonEntschluesseln){
   startDecrypt();
  }
 }
 
 
 
 
 //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 startEncrypt() {
    
    final String secretKey = edittext_schluessel.getText().toString();
     
     String originalString = edittext_eingabe.getText().toString();
     String encryptedString = encrypt(originalString, secretKey) ;
 //   String decryptedString = decrypt(encryptedString, secretKey) ;
     
     edittext_ausgabe.setText(encryptedString);
}
public void startDecrypt() {
    
    final String secretKey = edittext_schluessel.getText().toString();
     
   //  String originalString = edittext_eingabe.getText().toString();
     String encryptedString = edittext_eingabe.getText().toString();
     String decryptedString = decrypt(encryptedString, secretKey) ;
     
     edittext_ausgabe.setText(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.encode(cipher.doFinal(strToEncrypt.getBytes("UTF-8")), 0).toString();
   
    } 
  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.decode(strToDecrypt, 0)));
  } 
  catch (Exception e) 
  {
   System.out.println("Error while decrypting: " + e.toString());
  }
  return null;
 }

}
 

Flown

Administrator
Mitarbeiter
Ich weiß zwar nicht wo du deinen Base64 Encoder jetzt her importiert hast, aber das mit dem android Encoder geht genauso.
Im Gegensatz zum JDK braucht dieser keine Encoderinstanz sondern löst das über statische Methoden!
 

Ähnliche Java Themen

Neue Themen


Oben