web-dev-qa-db-ja.com

Base 64エンコードおよびデコードのサンプルコード

誰もがBase64を使用してBase64で文字列をデコードおよびエンコードする方法を知っていますか。次のコードを使用していますが、機能していません。

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)));
182
max

最初:

  • エンコードを選択してください。 UTF-8が一般に良い選択です。確実に両側で有効になるエンコーディングに固執する。 UTF-8やUTF-16以外のものを使うことはめったにありません。

送信側:

  • 文字列をバイトにエンコードします(例:text.getBytes(encodingName)
  • Base64クラスを使用してバイトをbase64にエンコードします
  • Base64を送信する

受け取り側

  • Base64を受け取る
  • Base64クラスを使用してbase64をバイトにデコードします。
  • バイトを文字列(例えばnew String(bytes, encodingName))にデコードします

だから、のようなもの:

// 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");

あるいは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);
440
Jon Skeet

Base64.encodeBytes()でエンコードされた文字列をデコードする方法に関する情報を探している間にここにたどり着いた他の誰かに、これが私の解決策でした:

// 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"); 

また、私はAndroidの古いバージョンをサポートしているので、私は http://iharder.net/base64 からRobert HarderのBase64ライブラリを使用しています。

17
Dunfield

何かのようなもの

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

Kotlinを使っているのであれば、こんな感じで使ってください

エンコード用

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

デコード用

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

Kotlin mbならこれを使うほうがいいです:

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)
}

例:

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

暗号化するには:

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

復号化するには:

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

APIレベル26以降

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

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

1
Fung LAM

以前の答えに基づいて、私は誰かがそれを使用したいと思う場合に備えて、私は以下のユーティリティメソッドを使用しています。

    /**
 * @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