[英]Has anyone worked with Rijndael encryption on Flutter? How to encrypt with Rijndael?
我正在使用加密 Flutter 包。 我寫了下面的代碼來加密數據。 但我找不到預期的結果。
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;
}
測試數據:
{
"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": ""
}
預期結果:
/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==
鑰匙:
**********
四:
*********
我從來沒有發現圍繞pointcastle
的“包裝”包很有用。 他們只是以添加“簡單性”的名義添加了混淆層。 直接使用底層包通常更容易。
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": ""
}''';
十分簡單
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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.