KotlinでのBase64エンコーディングおよびデコーディング文字列のガイド
1. 概要
このチュートリアルでは、Kotlinで文字列をBase64にエンコードおよびデコードするためのいくつかの一般的な方法について説明します。
2. 基本
Base64は、バイナリデータをテキストとして転送するために現代のWebアプリケーションで主に使用されるバイナリからテキストへのエンコーディングスキームです。 名前が示すように、 Base64番号システムには64個の記号があり、[A-Za-z0-9 + /]文字セットにマップされます:
Base64エンコーディングを使用して文字列「Baeldung」をエンコードするとします。
まず、元の文字列の各文字を、ASCII表現の8ビットのバイナリ値として表す必要があります。 次に、8ビットストリームを6ビットストリームにグループ化し、6ビット値ごとにBase64インデックスを取得します。 最後に、Base64マッピングテーブルを使用して、インデックスに対応するBase64桁を取得します。
3バイトのバイナリデータを4つのBase64桁で表すことができることがわかります。 さらに、ストリームの最後にある各6ビットのゼロパディングは、=記号で表されます。
最後に、「QmFlbGR1bmc=」は文字列「Baeldung」のBase64表現であると結論付けることができます。
3. Base64ユーティリティ
java.util.Base64ライブラリを使用して、Kotlinで文字列をエンコードおよびデコードできます。
まず、エンコーダーを使用して「Baeldung」文字列をエンコードしましょう。
val originalString = "Baeldung"
val encodedString: String = Base64.getEncoder().encodeToString(originalString.toByteArray())
assertEquals("QmFlbGR1bmc=", encodedString)
内部的には、 Base64クラスのgetEncoder()メソッドにより、RFC4648で説明されているエンコード標準に準拠したエンコーダーが取得されます。
次に、 Base64クラスのgetDecoder()メソッドを使用して、Base64文字列表現を元のテキストにデコードします。
val encodedString = "QmFlbGR1bmc="
val decodedString: String = String(Base64.getDecoder().decode(encodedString))
assertEquals("Baeldung", decodedString)
「QmFlbGR1bmc=」が文字列「Baeldung」の正しいBase64表現であることを検証しました。
getEncoder()メソッドと同様に、 getDecoder()メソッドもRFC4648標準に準拠したBase64デコーダーを返します。
4. ApacheCommonsBase64コーデック
Apache Commons Base64forBase64を使用して文字列をエンコードおよびデコードする方法を学びましょう。
まず、commons-codec依存関係をプロジェクトのpom.xmlに追加する必要があります。
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
次に、 java.util.Base64クラスとの名前の競合を防ぐために、ApacheBase64などのエイリアスを使用してKotlinクラスにorg.apache.commons.codec.binary.Base64を明示的にインポートする必要があります。
import org.apache.commons.codec.binary.Base64 as ApacheBase64
次に、 ApacheBase64 クラスのインスタンスを作成し、それを使用して文字列「Baeldung」をエンコードしましょう。
val originalString = "Baeldung"
val base64: ApacheBase64 = ApacheBase64()
val encodedStr = String(base64.encode(originalString.toByteArray()))
assertEquals("QmFlbGR1bmc=", encodedStr)
toByteArray()メソッドを使用して、文字列のバイト配列表現を取得してから、 encode()method。に渡すことに注意する必要があります。
同様に、 decode()メソッドを使用して、文字列「QmFlbGR1bmc=」のデコードを検証しましょう。
val encodedString = "QmFlbGR1bmc="
val base64: ApacheBase64 = ApacheBase64()
val decodedString: String = String(base64.decode(encodedString))
assertEquals("Baeldung", decodedString)
ここで、 decode()メソッドはバイト配列表現を返します。 したがって、元の String オブジェクトに対して検証するには、Stringオブジェクトを取得する必要があります。
5. 結論
この記事では、Base64エンコーディングの基本を学び、java.util.Base64やApacheCommonsBase64 CodecforBase64などのライブラリを使用して文字列をエンコードおよびデコードしました。
いつものように、チュートリアルの完全なソースコードは、GitHubでから入手できます。