password encryption added.
parent
becaa750a0
commit
96193a5469
@ -0,0 +1,42 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:typed_data';
|
||||
import 'package:crypto/crypto.dart';
|
||||
import 'package:encrypt/encrypt.dart' as encrypt;
|
||||
|
||||
class AesHelper {
|
||||
static String secretKey = "BRIL7VWSHDSY5G2SEVTI4SNAUEE66B3E";
|
||||
|
||||
static Uint8List _deriveKey(String key) {
|
||||
final keyBytes = utf8.encode(key);
|
||||
final hash = sha256.convert(keyBytes);
|
||||
return Uint8List.fromList(hash.bytes); // 32 bytes
|
||||
}
|
||||
|
||||
static String encryptText(String plainText) {
|
||||
if (plainText.isEmpty) {
|
||||
throw ArgumentError('plainText cannot be null or empty');
|
||||
}
|
||||
|
||||
final keyBytes = _deriveKey(secretKey);
|
||||
final key = encrypt.Key(keyBytes);
|
||||
final iv = encrypt.IV.fromSecureRandom(16);
|
||||
final encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: 'PKCS7'));
|
||||
final encrypted = encrypter.encryptBytes(utf8.encode(plainText), iv: iv);
|
||||
final combined = Uint8List.fromList(iv.bytes + encrypted.bytes);
|
||||
|
||||
return base64.encode(combined);
|
||||
}
|
||||
|
||||
static String decryptText(String cipherTextBase64) {
|
||||
final keyBytes = _deriveKey(secretKey);
|
||||
final key = encrypt.Key(keyBytes);
|
||||
final fullBytes = base64.decode(cipherTextBase64);
|
||||
final ivBytes = fullBytes.sublist(0, 16);
|
||||
final cipherBytes = fullBytes.sublist(16);
|
||||
final iv = encrypt.IV(Uint8List.fromList(ivBytes));
|
||||
final encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: 'PKCS7'));
|
||||
final decrypted = encrypter.decryptBytes(encrypt.Encrypted(Uint8List.fromList(cipherBytes)), iv: iv);
|
||||
|
||||
return utf8.decode(decrypted);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue