বেস 64 এনকোড এবং উদাহরণ কোড ডিকোড করুন


214

বেস64 ব্যবহার করে কীভাবে কোনও স্ট্রিং ডিকোড করতে এবং এনকোড করতে হয় know আমি নীচের কোডটি ব্যবহার করছি, তবে এটি কাজ করছে না।

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

1
আপনি এই আমদানি আবশ্যক import android.util.Base64;এবং তারপর ব্যবহার করতে পারেন Base64.encodeToString& Base64.decodeআপনার চাহিদা অনুযায়ী
Zohab আলী

উত্তর:


490

প্রথম:

  • একটি এনকোডিং চয়ন করুন। ইউটিএফ -8 সাধারণত একটি ভাল পছন্দ; একটি এনকোডিং আটকে যা অবশ্যই উভয় পক্ষেই বৈধ হবে। এটি ইউটিএফ -8 বা ইউটিএফ -16 বাদে অন্য কিছু ব্যবহার করা বিরল।

প্রেরণ শেষ:

  • বাইটগুলিতে স্ট্রিংটি এনকোড করুন (উদাঃ text.getBytes(encodingName))
  • Base64ক্লাসটি ব্যবহার করে বাইটগুলি বেস 64 এ এনকোড করুন
  • বেস 64 প্রেরণ করুন

শেষ প্রাপ্তি:

  • বেস 64 পাবেন
  • Base64বর্গ ব্যবহার করে বেস 64 কে ডিকোড করুন
  • বাইটগুলি একটি স্ট্রিংয়ে ডিকোড করুন (উদাঃ 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);

আপনি আমাকে সঠিক কোড দিতে পারেন যে দুর্দান্ত সাহায্য হবে। আমি ব্যবহার করছি কিন্তু এটি কাজ করছে না। স্ট্রিং উত্স = "পাসওয়ার্ড"; বাইট [] বাইটআর্রে = উত্স.জেটবাইটস ("ইউটিএফ -16"); বেস 64 বিএস = নতুন বেস 64 (); //bs.encodeBytes(byteArray); System.out.println (bs.encodeBytes (byteArray)); //bs.decode(bs.encodeBytes(byteArray)); System.out.println (bs.decode (bs.encodeBytes (byteArray)));
সর্বাধিক

9
@ ম্যাক্স: "এটি কাজ করছে না" যা ঘটছে তার কোনও ভাল বর্ণনা কখনও নয়। যদিও আমার পোস্টটি সম্পাদনা করবে।
জন স্কিটি

3
এছাড়াও লক্ষ করুন যে আপনার স্থির পদ্ধতিগুলি কল করা উচিত নয় যেমন সে উদাহরণস্বরূপ পদ্ধতি ...
জন স্কিটি

3
যদি আপনি এটির মতো রাখেন তবে এটি স্ট্রিং বেস 64 = বেস64.encodeToString (ডেটা, বেস 64.NO_Wrap) কাজ করবে;
জয়

1
@ পোর্টফোলিওবিল্ডার: একেবারে না। UTF-8জাভাতে একটি বৈধ এনকোডিং হওয়ার গ্যারান্টিযুক্ত: ডকস.ওরকল / জাভাসে / 8 / ডকস / এপি / জাভা / ন্যানো / চারসেট / চরসেট এইচটিএমএল দেখুন । স্বীকারোক্তিহীন এই দিন আমি StandardCharsets.UTF_8পরিবর্তে নির্দিষ্ট করতে হবে। চরসেটের উপস্থিতিতে আপনার আত্মবিশ্বাসী হওয়া উচিত উল্লেখ করে আমি উত্তরটি আপডেট করেছি, তবে আমি সবসময় ইউটিএফ -8 ব্যবহার করি।
জন স্কিটি

18

অন্য যে কেউ এখানে এনকোডযুক্ত স্ট্রিংটি কীভাবে ডিকোড করতে হবে সে সম্পর্কিত তথ্যের সন্ধানের জন্য এখানে এসেছিল 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"); 

এছাড়াও, আমি অ্যান্ড্রয়েডের পুরানো সংস্করণগুলিকে সমর্থন করছি তাই আমি রবার্ট হার্ডারের বেস 64 লাইব্রেরিটি http://iharder.net/base64 থেকে ব্যবহার করছি


10

জন্য Kotlin মেগাবাইট ভালো ব্যবহার করার জন্য:

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

1
এই এক্সটেনশন ফাংশনগুলির জন্য নামকরণ ভয়ঙ্কর। আমি encodeToBase64 বা অনুরূপ কিছু ব্যবহার করার জন্য সুপারিশ করব।
রল্ফ ツ

তারা একেবারে পরিষ্কার এবং সুস্পষ্ট নয়। আমাকে বলুন: "ডিকোড" বা "এনকোড" এর অর্থ কী? হাজার হাজার ডিকোডিং / এনকোডিং অ্যালগরিদম রয়েছে ... আপনার যদি বেস 64 এবং হেক্সের প্রয়োজন হয়? তাহলে কীভাবে আপনি নামগুলির নাম রাখবেন?
রল্ফ ツ

বিভিন্ন বেস 64 স্ট্যান্ডার্ডের কথা উল্লেখ না করে।
রল্ফ ツ

এই ব্যবহারের ক্ষেত্রে পরিষ্কার এবং স্পষ্ট। আমার যদি অন্য অ্যালগরিদম প্রয়োজন হয় তবে আমি এটিকে কখনই এক্সটেনশন পদ্ধতি হিসাবে ব্যবহার করব না।
brunql

1
তবুও আমি ন্যূনতম হিসাবে 'toBase64 ()' এবং 'fromBase64 ()' এর মতো কিছু পছন্দ করব। পদ্ধতিটি কী করবে তা জানতে আমার কোনও ডকুমেন্টেশন পড়ার দরকার নেই। মনে রাখবেন: "কোডটি লেখার চেয়ে বেশি পড়া হয়"।
ल्फ ツ

8

আপনি যদি এই জাতীয় ব্যবহারের চেয়ে কোটলিন ব্যবহার করেন

এনকোডের জন্য

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

3
অথবা আপনি চরসেটের পরিবর্তে অক্ষরগুলি ("ইউটিএফ -8") ব্যবহার করতে পারেন OUTF_8।
makovkastar

@ মাকোভকাস্টার এখনই সুনিশ্চিত করুন, এখন স্ট্যান্ডার্ডচর্সেটস.উফএফ 8
ম্যাট

7

কিছুটা এইরকম

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

5
আপনার উত্তরটি বোঝায় যে বেস 64 এ পাসওয়ার্ডগুলি এনকোডিং করা একটি ভাল অনুশীলন। বাস্তবে এটি কোনওরকম সহজভাবে ডিকোড করতে পারে না।
হেইনরিচ

2

এনক্রিপ্ট করতে:

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

1

পূর্ববর্তী উত্তরের ভিত্তিতে আমি নিম্নলিখিত ইউটিলিটি পদ্ধতিগুলি ব্যবহার করছি যদি কেউ এটির ব্যবহার করতে চান।

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


0

'java.util.Base64' ক্লাসটি বেস 64 নম্বরে ইনকোড এবং ডিকোড করার কার্যকারিতা সরবরাহ করে।

কিভাবে বেস 64 এনকোডার পাবেন?

Encoder encoder = Base64.getEncoder();

কিভাবে বেস 64 ডিকোডার পাবেন?

Decoder decoder = Base64.getDecoder();

কীভাবে ডাটা এনকোড করবেন?

Encoder encoder = Base64.getEncoder();
String originalData = "java";
byte[] encodedBytes = encoder.encode(originalData.getBytes());

কিভাবে ডেটা ডিকোড করবেন?

Decoder decoder = Base64.getDecoder();
byte[] decodedBytes = decoder.decode(encodedBytes);
String decodedStr = new String(decodedBytes);

আপনি এই লিঙ্কে আরও বিশদ পেতে পারেন ।


-1
    <?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>

এটি অ্যান্ড্রয়েড স্টুডিওতে বেস 64 এর মাধ্যমে এনকোড এবং ডকোড করার জন্য
আসিফ আলী

উত্তরে আপনার মন্তব্য আপডেট করুন। এছাড়াও একক উত্তরে জাভা এবং এক্সএমএল পোস্ট করুন।
অ্যান্ড্রয়েড

কিছু কোড সহ কিছু ব্যাখ্যা লেখা সর্বদা একটি ভাল অনুশীলন। ধন্যবাদ!
সূরাজ

-1
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)));

            }
        });


    }
}

-2

এনকোডার এন্ড্রয়েড এপিআই এর byte[]জন্যBase64String

byte[] data=new byte[];
String Base64encodeString=android.util.Base64.encodeToString(data, android.util.Base64.DEFAULT);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.