Reputation: 2470
I am using the encrypt Flutter package. I wrote the code below to encrypt data. But I could not find the expected result.
String encrypterAESdata({String? data}){
final key = Key.fromUtf8(aesKey);
final iv = IV.fromUtf8(aesKey);
final encrypter = Encrypter(AES(key, mode: AESMode.cbc, padding: "PKCS7" ));
final encrypted = encrypter.encrypt(data!, iv: iv);
return encrypted.base64;
}
Test Data:
{
"remittanceNoPrefix": "IT",
"adjustedDCAmount": 0,
"beneAccNo": "01912163589",
"benePhone": "01912163589",
"beneAccTypeID": 199,
"beneAmount": "4900",
"beneBankName": "BKASH (MOBILE ACCOUNT)",
"beneBankBranchID": 31637,
"beneBankID": 1135,
"beneBranchName": "BKASH (ANY AGENT POINT)",
"beneBrnAddress": "ANYWHERE",
"beneCountryID": 23,
"beneCurrencyID": 15,
"beneDocID": null,
"beneDocNo": "",
"beneficiaryID": 497656,
"beneficiarySurname": "TEST",
"beneficiaryName": "TEST",
"relationID": null,
"benePayeeModeID": 11,
"subCompanyBranchID": 151886,
"companyID": 76,
"subCompanyID": 367,
"debitCardID": null,
"discountedComm": 0,
"encashedPoint": 0,
"encashedPointAmount": 0,
"equiAmount": 50,
"ofrdAmount": 50,
"equiCommission": 3,
"ofrdCommission": 3,
"taxAmount": 0,
"cardCharge": 0,
"instrumentDetail": "",
"instrumentTypeID": "120",
"maturityDate": "2019-02-14T00:00:00.000Z",
"issueDate": "2019-02-14T00:00:00.000Z",
"othrRcvdAmount": 0,
"othrRcvdCommission": 0,
"pDRate": 98,
"purposeDetail": "FAMILY HELP",
"purposeID": 2,
"aMLRemBhvClsID": null,
"aMLRemBhvClsValue": 0,
"aMLOpVoteClsID": null,
"aMLOpVoteClsValue": 0,
"aMLCoopClsID": null,
"aMLCoopClsValue": 0,
"aMLOpTypeClsID": null,
"aMLOpTypeClsValue": 0,
"fldPsfx": "",
"cdType": "BNKXFR",
"cdNo": "",
"cdExp": "",
"cdSecCode": ""
}
Expected Result:
/qDmHF87PF/E6Bmwiot9roUrXwEvykmHzCLMbKq2YnVUuHDGqXqMWlJ8ZhCzMBcqppkpvjY6NkN8bUUp0fYZz1Pl6I5E/qtIaxbvrMOU+wRDpLvV1Ymd+o+J1fe0PLAmC5SUXsj1MyRCPG0LJ1cRjHR7F4HnWJZoGOCmeh3nZrzGSkdVQ3Xya8c8eK0RiAkcgUABpwptY77yknR1WNEV6HoOnOxdPt6vo/D0oba17jp5coonFCcVUsmZ3PacRmCzVuhbvqaFJgCoykBZOkzsSUgl792F1QP9995q/S/hmFJZv2JHyNKeOGLJ55uMSVHYTPOvqgAn7VZ2CkiTBQSaDJpWzLF/3HpQR9jjgY3n5cOGqJyPbWiLz0N4jWeOJ6TUnyBd8K5PhtOY8C+uh5GkeyAWrieEFbX1Q5pytaUKcqDBTOWjF3945ImVSoviZYHDaPgJ8f/1V3FuAdH3VM+zpzlBAmVwtcjfZZzfzdDSOUgYeU98P+JjWfqX8bQu5vXBSCnkMqEENyM85z9ISoi+oYKnsYNt6sPKOf2lVIxj+9vA9G1+fCfNTH1a7Tg2yszSHA3yTNy1QLTqQY9fCS0A/vIgJPjHYJPjjLNK4CA0L1mZje8Rkh9eha8BD61/6YPAJFAfiU6eNK8uC5gToMSdOTt2auj2i3yuPx8sLyTBe8MOI3TOCoE/xC2yqCUxuUqH1ppn2TKlNjULy2ChiJG5o3cTC6b7trAaNzn+B8220TkaM1+k5RDvELd6+GcxdteO43oECs2eoXYF28z+V/kGHAhQeBBMKEF5sAaD3Qnq+IX4uHOjc6ngu41IbKnvrMaDL+o1qjfrLILQAPgYYHSzzp/C7Ov1Yzym0bR8dp7g+ATFj+1sgNOQWyzVr7v74stncu0aREBPJFTn1SkoajFJ2XD40+65IHw6ZKxfeXT2ArKueZrXPFYI/j5FW1jVfyM66FW6prmJ33PfadQ1OLMRS84FKhv3xfXP20hca/mMDXWzVOfhMDhPQRx0txL6Qh6AqS984UgM6CTcWIGL7UC7UMDtEYrcsLOw0y7LR0vD0acH+d4NESC7AzyDaN4//otzaYyOeNvYCraDWx0DpPyJCQfQSQKctzELHWgcb8hHgMup42ewu4+cMml42eTwVjrbKAYcSTYeimb0aVa9LlObOoUBFBrudzhhyXueYd1+RK83k8BuCyxo9jsk7oDlsngm4j8HdOvp2TJm4gFs1wTDR4lQmuqVNMdorJT6iO7f/tEuOMTb6lXueM7XWDlQ9vbUYDlG8py9K3Tfd6cPny2L7uzdCk2OnnmEpYmVM3nzhgY1wYz/TwS3sWAYriRDJ1WhXKoCWC7iXn+rKq1QwctxatFiz14zYtU41ucXFM0uiU76jPYQ8q3UsGHMvoL7pbAii4qW05QEcDuGjI/kJgtTf8KWZz+tk7ii3nnh+nrh//1hiC8sC1GJ7/PIdvPj4yXWv0wG8XONfl43MIRTD1n43ePkNQaYyeGFmcZc+BJjPTZ6Z7KZjACbaeS8YZlAE8EAOVGNzq4oZFpFt/+VJcMIa17LtCrjTqcDuDFggjO633Z3ISLnAZJeYoaXtFWaehdZVCimTh0xCnON63jlmyrZoL38cCqFfBiEcJ4O04Pfqob6FEhgTEk4vhQLV7n/O4LhsR9yyfnipY2IrZHVOIGYDJfnw3D4NrpKjBRxq2q/ihTLYzQCpmyXaFVNmgIsv37fdgk2TYZ6leyVs+jDdUwogluqzbTEGOOqK4ZqvLgntEYEFjGEP4Ztjwu48BuLvsT2vH/zuKMW5L0WtZYn6Ytq2sFDJ2aoFSWvUwnz4w5lrrD1dmOOJJGpnn3aNAWcwx5DZk7tCFOp0D6zGtajLM7pMA==
Key:
**********
IV:
*********
Upvotes: 1
Views: 874
Reputation: 1533
easy peasy
import 'package:cryptography/cryptography.dart';
String s = "i want to encrypt this init";
String key = 'AAèìýUn}a…ópŒ¹%J'yL4ßK,£½';
List<int> listint= utf8.encode(s);
Uint8List listUint= Uint8List.fromList(key.codeUnits);
AesGcm algorithm = AesGcm.with256bits();
SecretKey secretKey = await algorithm.newSecretKeyFromBytes(listUint);
SecretBox secretBox = await algorithm.encrypt(
listint,
secretKey: secretKey,
);
print('Nonce: ${secretBox.nonce}');
print('Ciphertext: ${secretBox.cipherText}');
print('MAC: ${secretBox.mac.bytes}');
Uint8List listEncryptedUint = secretBox.concatenation();
print('this is the encrypted payload init: '+listEncryptedUint .toString());
Upvotes: -2
Reputation: 51682
I never find the 'wrapper' packages around pointcastle
useful. They just add layers of obfuscation in the name of adding 'simplicity'. It's often easier to just use the underlying package directly.
import 'dart:convert';
import 'dart:typed_data';
import 'package:pointycastle/export.dart';
void main() {
final k = 'Nec_uK_2@!6_CebD';
final key = utf8.encode(k) as Uint8List;
final iv = key;
print(key);
final cipher = PaddedBlockCipherImpl(
PKCS7Padding(),
CBCBlockCipher(AESEngine()),
)..init(
true,
PaddedBlockCipherParameters(
ParametersWithIV(KeyParameter(key), iv),
null,
),
);
final data = utf8.encode(pt) as Uint8List;
final ct = cipher.process(data);
print(data.length);
print(ct.length);
print(base64.encode(ct));
}
final pt = '''{
"remittanceNoPrefix": "IT",
"adjustedDCAmount": 0,
...
"cdExp": "",
"cdSecCode": ""
}''';
Upvotes: 1