[flutter] 플러터(Flutter)에서 캐시 데이터 암호화 방법은?

목차

  1. 원하는 데이터를 암호화
  2. Shared Preferences를 이용한 캐시 데이터 관리
  3. 캐시 데이터 암호화
  4. 암호화된 데이터를 저장하고 불러오기
  5. 결론

1. 원하는 데이터를 암호화

원하는 데이터를 암호화하기 위해서는 암호화 알고리즘을 선택해야 합니다. 대표적인 암호화 알고리즘으로 AES(Advanced Encryption Standard) 알고리즘이 있습니다. 이 알고리즘을 사용하여 데이터를 암호화하고 복호화할 수 있습니다.

import 'package:encrypt/encrypt.dart';

void encryptData(String data, String key) {
  final key = Key.fromUtf8('my32lengthprivatekeyyyyyyyyy');
  final iv = IV.fromLength(16);

  final encrypter = Encrypter(AES(key, iv));

  final encryptedData = encrypter.encrypt(data);
  final decryptedData = encrypter.decrypt(encryptedData);
}

2. Shared Preferences를 이용한 캐시 데이터 관리

플러터(Flutter)에서는 Shared Preferences를 사용하여 앱의 간단한 데이터를 로컬에 저장할 수 있습니다. 이를 통해 캐시 데이터를 안전하게 저장하고 관리할 수 있습니다.

import 'package:shared_preferences/shared_preferences.dart';

void saveDataToCache(String key, String data) async {
  final prefs = await SharedPreferences.getInstance();
  prefs.setString(key, data);
}

Future<String?> getDataFromCache(String key) async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString(key);
}

3. 캐시 데이터 암호화

위에서 언급한 AES 알고리즘을 사용하여 캐시 데이터를 암호화할 수 있습니다.

4. 암호화된 데이터를 저장하고 불러오기

void saveEncryptedDataToCache(String key, String data) async {
  final key = Key.fromUtf8('my32lengthprivatekeyyyyyyyyy');
  final iv = IV.fromLength(16);

  final encrypter = Encrypter(AES(key, iv));
  final encryptedData = encrypter.encrypt(data);

  final prefs = await SharedPreferences.getInstance();
  prefs.setString(key, encryptedData.base64);
}

Future<String?> getDecryptedDataFromCache(String key) async {
  final prefs = await SharedPreferences.getInstance();
  final encryptedData = prefs.getString(key);
  
  final key = Key.fromUtf8('my32lengthprivatekeyyyyyyyyy');
  final iv = IV.fromLength(16);

  final encrypter = Encrypter(AES(key, iv));
  return encrypter.decrypt64(Encrypted.fromBase64(encryptedData!));
}

5. 결론

위 방법을 통해 플러터(Flutter) 앱에서 캐시 데이터를 안전하게 암호화할 수 있습니다. 이를 통해 사용자 데이터를 보호하고 민감한 정보가 노출되는 것을 방지할 수 있습니다. 데이터 보안에 대한 이러한 노력은 앱 사용자들에게 신뢰와 안전을 제공하기 위한 중요한 요소입니다.