wake-up-neo.com

Basis 64 codiert und decodiert Beispielcode

Kann jemand eine Zeichenfolge in Base64 mithilfe von Base64 dekodieren und kodieren Ich verwende den folgenden Code, aber es funktioniert nicht.

String source = "password"; 
byte[] byteArray = source.getBytes("UTF-16"); 
Base64 bs = new Base64(); 
//bs.encodeBytes(byteArray); 
System.out.println( bs.encodeBytes(byteArray)); 
//bs.decode(bs.encodeBytes(byteArray));
System.out.println(bs.decode(bs.encodeBytes(byteArray)));
173
max

Zuerst:

  • Wählen Sie eine Kodierung. UTF-8 ist im Allgemeinen eine gute Wahl. halten Sie sich an eine Kodierung, die auf beiden Seiten definitiv gültig ist. Es ist selten, etwas anderes als UTF-8 oder UTF-16 zu verwenden.

Übertragungsende:

  • Kodierung der Zeichenfolge in Bytes (z. B. text.getBytes(encodingName))
  • Kodieren Sie die Bytes mit der Klasse Base64 in base64
  • Übertragen Sie die base64

Empfangsende:

  • Erhalten Sie die base64
  • Decodieren Sie die base64 in Bytes mit der Klasse Base64
  • Decodieren Sie die Bytes in einen String (z. B. new String(bytes, encodingName)).

So etwas wie:

// Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");

Oder mit StandardCharsets:

// Sending side
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, StandardCharsets.UTF_8);
418
Jon Skeet

Für alle anderen, die bei der Suche nach Informationen zum Dekodieren einer mit Base64.encodeBytes() codierten Zeichenfolge hier gelandet sind, war hier meine Lösung:

// encode
String ps = "techPass";
String tmp = Base64.encodeBytes(ps.getBytes());

// decode
String ps2 = "dGVjaFBhC3M=";
byte[] tmp2 = Base64.decode(ps2); 
String val2 = new String(tmp2, "UTF-8"); 

Ich unterstütze auch ältere Versionen von Android, daher verwende ich Robert Harders Base64-Bibliothek von http://iharder.net/base64

16
Dunfield

so etwas wie 

String source = "password"; 
byte[] byteArray;
try {
    byteArray = source.getBytes("UTF-16");
    System.out.println(new String(Base64.decode(Base64.encode(byteArray,
           Base64.DEFAULT), Base64.DEFAULT)));
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
7
DonGru

Wenn Sie Kotlin als verwenden, verwenden Sie diese Option

Für den Code

val password = "Here Your String"
val data = password.toByteArray(charset("UTF-8"))
val base64 = Base64.encodeToString(data, Base64.DEFAULT)

Für decodieren

val datasd = Base64.decode(base64, Base64.DEFAULT)
val text = String(datasd, charset("UTF-8"))
6
Mohit Suthar

Um Kotlin mb besser zu verwenden:

fun String.decode(): String {
    return Base64.decode(this, Base64.DEFAULT).toString(charset("UTF-8"))
}

fun String.encode(): String {
    return Base64.encodeToString(this.toByteArray(charset("UTF-8")), Base64.DEFAULT)
}

Beispiel:

Log.d("LOGIN", "TEST")
Log.d("LOGIN", "TEST".encode())
Log.d("LOGIN", "TEST".encode().decode())
3
brunql

Zu verschlüsseln: 

byte[] encrpt= text.getBytes("UTF-8");
String base64 = Base64.encodeToString(encrpt, Base64.DEFAULT);

Zu entschlüsseln:

byte[] decrypt= Base64.decode(base64, Base64.DEFAULT);
String text = new String(decrypt, "UTF-8");
1
user8356857

Basierend auf den vorherigen Antworten verwende ich die folgenden Dienstmethoden für den Fall, dass jemand sie verwenden möchte.

    /**
 * @param message the message to be encoded
 *
 * @return the enooded from of the message
 */
public static String toBase64(String message) {
    byte[] data;
    try {
        data = message.getBytes("UTF-8");
        String base64Sms = Base64.encodeToString(data, Base64.DEFAULT);
        return base64Sms;
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    return null;
}

/**
 * @param message the encoded message
 *
 * @return the decoded message
 */
public static String fromBase64(String message) {
    byte[] data = Base64.decode(message, Base64.DEFAULT);
    try {
        return new String(data, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    return null;
}
1
Szabolcs Becze
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:orientation="vertical"
    Android:layout_height="match_parent"
    tools:context=".BaseActivity">
   <EditText
       Android:layout_width="match_parent"
       Android:layout_height="wrap_content"
       Android:id="@+id/edt"
       Android:paddingTop="30dp"
       />
    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/tv1"
        Android:text="Encode"
        Android:textSize="20dp"
        Android:padding="20dp"
        />
    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/tv2"

        Android:textSize="20dp"
        Android:padding="20dp"
        />
    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/tv3"
        Android:text="decode"
        Android:textSize="20dp"
        Android:padding="20dp"
        />
    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/tv4"
        Android:textSize="20dp"
        Android:padding="20dp"


        />
</LinearLayout>
0
Asif Ali
package net.itempire.virtualapp;

import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.util.Base64;
import Android.view.View;
import Android.widget.EditText;
import Android.widget.TextView;

public class BaseActivity extends AppCompatActivity {
EditText editText;
TextView textView;
TextView textView2;
TextView textView3;
TextView textView4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
        editText=(EditText)findViewById(R.id.edt);
        textView=(TextView) findViewById(R.id.tv1);
        textView2=(TextView) findViewById(R.id.tv2);
        textView3=(TextView) findViewById(R.id.tv3);
        textView4=(TextView) findViewById(R.id.tv4);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             textView2.setText(Base64.encodeToString(editText.getText().toString().getBytes(),Base64.DEFAULT));
            }
        });

        textView3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView4.setText(new String(Base64.decode(textView2.getText().toString(),Base64.DEFAULT)));

            }
        });


    }
}
0
Asif Ali

Für API Level 26 und höher

String encodedString = Base64.getEncoder().encodeToString(byteArray);

Ref: https://developer.Android.com/reference/Java/util/Base64.Encoder.html#encodeToString (byte [])

0
Fung LAM