728x90
오늘은 web3j 라이브러리를 활용해 private key와 public key 키쌍을 생성하는 간단한 예시를 만들어 보겠습니다.
라이브러리 준비 및 그래들 설정
=> web3j는 자바 17의 record 기능을 활용하기에 자바17의 기능을 사용할 수 있도록 app 수준 build.gradle 파일에서 위 이미지와 같이 설정해주세요.
=> web3j는 Bouncy Castle, Jackson, OkHttp, RxJava, WebSocket 라이브러리들에 의존하는 라이브러리 입니다. 이에 따라web3j 포함 필요한 라이브러리들을 추가해주세요.
https://github.com/LFDT-web3j/web3j?tab=readme-ov-file
GitHub - LFDT-web3j/web3j: Lightweight Java and Android library for integration with Ethereum clients
Lightweight Java and Android library for integration with Ethereum clients - LFDT-web3j/web3j
github.com
레이아웃 xml 파일 코드(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Button
android:id="@+id/btn_generate_keys"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="키 쌍 생성" />
<TextView
android:id="@+id/tv_private_key"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textIsSelectable="true"/>
<TextView
android:id="@+id/tv_public_key"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textIsSelectable="true"/>
</LinearLayout>
액티비티 자바 코드
public class MainActivity extends AppCompatActivity {
private TextView tvPrivateKey; //private key 보여줄 뷰
private TextView tvPublicKey; //public key 보여줄 뷰
private Button btnGenerateKeys; //키 쌍 생성 버튼 뷰
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvPrivateKey = findViewById(R.id.tv_private_key);
tvPublicKey = findViewById(R.id.tv_public_key);
btnGenerateKeys = findViewById(R.id.btn_generate_keys);
// 키 쌍 생성 버튼 눌릴시 이벤트 설정
btnGenerateKeys.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
generateKeys();
}
});
}
//키 쌍 생성 메서드
private void generateKeys() {
try {
//SECP-256k1 기반 private key, public key를 가진 객체 생성
ECKeyPair ecKeyPair = Keys.createEcKeyPair();
// private key 문자열 추출
String privateKey = Numeric.toHexStringWithPrefix(ecKeyPair.getPrivateKey());
// public key 문자열 추출
String publicKey = Numeric.toHexStringWithPrefix(ecKeyPair.getPublicKey());
// UI에 키값들 표시
tvPrivateKey.setText("private key: " + privateKey);
tvPublicKey.setText("public key: " + publicKey);
} catch (Exception e) {
Toast.makeText(this, "키 쌍 생성 오류: " + e.getMessage(), Toast.LENGTH_SHORT).show();
Log.e("에러", "에러 발생", e);
}
}
}
실행 결과
키값들이 생성된 것을 확인할 수 있습니다
'안드로이드 자바' 카테고리의 다른 글
[Java][Android] MotionLayout 활용하기 (0) | 2025.04.01 |
---|---|
[Java][Android] CountDownTimer 활용해 간단한 타이머 만들기 (0) | 2025.03.25 |
[Java][Android] 다크모드 적용하기 (0) | 2025.03.18 |
[Java][Android] Toolbar 사용해 상단바 만들기 (0) | 2025.03.11 |
[Java][Android] TextClock 위젯 사용하기 (0) | 2025.03.04 |