ente/lib/utils/crypto_util.dart
2020-08-11 05:17:22 +05:30

32 lines
1.1 KiB
Dart

import 'dart:typed_data';
import 'package:aes_crypt/aes_crypt.dart';
import 'package:encrypt/encrypt.dart';
class CryptoUtil {
static String getBase64EncodedSecureRandomString({int length = 32}) {
return SecureRandom(length).base64;
}
static String encrypt(String plainText, String base64Key, String base64IV) {
final encrypter = Encrypter(AES(Key.fromBase64(base64Key)));
final iv = base64IV == null ? null : IV.fromBase64(base64IV);
return encrypter.encrypt(plainText, iv: iv).base64;
}
static String decrypt(String cipherText, String base64Key) {
final encrypter = Encrypter(AES(Key.fromBase64(base64Key)));
return encrypter.decrypt(Encrypted.fromBase64(cipherText));
}
// Encrypts a file and returns the IV that was used
static Future<void> encryptFile(String sourcePath, String destinationPath,
String base64Key, String base64IV) async {
final encrypter = AesCrypt("hello");
encrypter.aesSetParams(Key.fromBase64(base64Key).bytes,
IV.fromBase64(base64IV).bytes, AesMode.cbc);
encrypter.setOverwriteMode(AesCryptOwMode.on);
await encrypter.encryptFile(sourcePath, destinationPath);
}
}