[flutter] 플러터(Flutter)에서 앱 데이터 암호화하기

플러터(Flutter)는 크로스 플랫폼 앱 개발을 위한 프레임워크로, 개발자들이 iOS와 안드로이드 앱을 한 번의 개발로 만들 수 있습니다. 하지만 앱에 저장되는 사용자 데이터의 보안은 매우 중요합니다. 앱 데이터를 암호화하여 개인정보와 중요한 데이터를 보호할 수 있습니다.

이번 튜토리얼에서는 플러터에서 앱 데이터를 암호화하는 방법에 대해 알아보겠습니다.

1. crypto 패키지 설치하기

플러터에서 암호화를 위해 crypto 패키지를 사용할 것입니다. 먼저 pubspec.yaml 파일에 crypto 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 crypto 패키지를 추가합니다.

dependencies:
  crypto: ^2.1.5

그리고 터미널에서 아래 명령어를 실행하여 패키지를 설치합니다.

$ flutter pub get

2. 암호화 함수 구현하기

이제 crypto 패키지를 사용하여 암호화 함수를 구현할 차례입니다. 암호화 함수는 사용자 데이터를 암호화하는 역할을 합니다. 아래는 AES 암호화를 사용한 예시 코드입니다.

import 'package:crypto/crypto.dart';
import 'dart:convert';

String encryptData(String data, String key) {
  final keyBytes = utf8.encode(key);
  final dataBytes = utf8.encode(data);

  final hmac = Hmac(sha512, keyBytes);
  final digest = hmac.convert(dataBytes);

  return digest.toString();
}

위의 코드는 encryptData 함수를 정의하고, 사용자 데이터와 암호화에 사용할 키를 전달받아 AES 암호화를 수행합니다. 결과로 암호화된 데이터를 문자열로 반환합니다.

3. 암호화 데이터 저장하기

이제 암호화된 데이터를 저장하는 방법에 대해 알아보겠습니다. 암호화된 데이터를 저장하기 위해 안전한 저장소인 shared_preferences 패키지를 사용할 수 있습니다. shared_preferences는 앱 내부에 데이터를 저장하는 기능을 제공합니다.

먼저 shared_preferences 패키지를 pubspec.yaml 파일에 추가합니다.

dependencies:
  shared_preferences: ^2.0.6

그리고 터미널에서 아래 명령어를 실행하여 패키지를 설치합니다.

$ flutter pub get

데이터를 저장하기 위해 다음과 같이 코드를 작성할 수 있습니다.

import 'package:shared_preferences/shared_preferences.dart';

void saveEncryptedData(String encryptedData) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setString('encryptedData', encryptedData);
}

위의 코드는 saveEncryptedData 함수를 정의하고, 암호화된 데이터를 SharedPreferences에 저장합니다. SharedPreferences는 비동기적으로 작동하므로 await 키워드를 사용하여 함수 호출을 기다립니다.

4. 복호화 데이터 가져오기

마지막으로 저장된 암호화된 데이터를 가져와서 복호화하는 방법에 대해 알아보겠습니다. SharedPreferences에서 암호화된 데이터를 가져온 후, 이전에 정의한 암호화 함수의 역으로 사용하여 데이터를 복호화합니다.

import 'package:shared_preferences/shared_preferences.dart';

Future<String> getDecryptedData() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  String encryptedData = prefs.getString('encryptedData') ?? '';

  // 암호화된 데이터를 복호화
  String decryptedData = decryptData(encryptedData, '암호화 키');

  return decryptedData;
}

위의 코드는 getDecryptedData 함수를 정의하고, SharedPreferences에서 암호화된 데이터를 가져온 후 decryptData 함수를 사용하여 데이터를 복호화합니다. 복호화된 데이터를 반환합니다.

이제 플러터(Flutter) 앱에서 암호화된 데이터를 저장하고, 필요할 때 복호화하여 사용할 수 있습니다. 데이터의 보안을 위해 암호화를 사용하는 것은 중요한 사항이므로 신중하게 처리해야 합니다.


참고: