Rumahjo-Android-APP/lib/utils/Encryption/rsa.dart
2024-09-07 07:58:50 +07:00

39 lines
1.2 KiB
Dart

import 'dart:convert';
import 'dart:typed_data';
import 'package:encrypt/encrypt.dart';
import 'package:pointycastle/asymmetric/api.dart' as d;
class RSAEncryption {
final parser = RSAKeyParser();
//encrypted data must be in base 64
String decrypt({required String privateKey, required String encryptedData}) {
try {
Uint8List encryptedData_ =
Uint8List.fromList(base64Decode(encryptedData));
// Parse the private key from the PEM format
final __privateKey__ = parser.parse(privateKey) as d.RSAPrivateKey;
// Create an RSA decrypter with the private key
final decrypter = Encrypter(RSA(privateKey: __privateKey__));
// Decrypt the data
final decryptedData = decrypter.decryptBytes(Encrypted(encryptedData_));
// Convert the decrypted data to a string
String decryptedText = utf8.decode(decryptedData);
return decryptedText;
} catch (e) {
throw ("Decrypt failed:$e");
}
}
String encrypt({required String data, required String publicKey}) {
d.RSAPublicKey publicKey_ = parser.parse(publicKey) as d.RSAPublicKey;
final encrypter = Encrypter(RSA(publicKey: publicKey_));
final encrypted = encrypter.encrypt(data);
return encrypted.base64;
}
}