본문 바로가기
프로그래밍/Flutter

[Flutter] AES 암호화

by YuminK 2022. 5. 13.

encrypt 패키지를 사용하고 있습니다.

AESKey를 넣어주면 16자리 키보다 작으면 늘리고 크면 16자리로 잘라서 사용합니다. (키를 16자리로 맞춰야 함)

그 외 empty값이 들어오면 죽어가지고 예외 처리 해주고 있습니다.

import 'package:encrypt/encrypt.dart';

String encrypt(String strAesKey, String strValue) {
  if(strValue.isEmpty) {
    return "";
  }
  if(strAesKey.length < 16) {
    strAesKey = strAesKey + ' ' * (16 - strAesKey.length);
  } else {
    strAesKey = strAesKey.substring(0, 16);
  }

  final encrypted = Encrypter(AES(Key.fromUtf8(strAesKey)))
      .encrypt(strValue, iv: IV.fromLength(16));
  return encrypted.base64;
}

String decrypt(String strAesKey, String strValue) {
  if(strValue.isEmpty) {
    return "";
  }
  if(strAesKey.length < 16) {
    strAesKey = strAesKey + ' ' * (16 - strAesKey.length);
  } else {
    strAesKey = strAesKey.substring(0, 16);
  }

  final decrypted = Encrypter(AES(Key.fromUtf8(strAesKey)))
      .decrypt64(strValue, iv: IV.fromLength(16));
  return decrypted;
}

댓글