ios - How to decrypt a very long string of AES 256 (CBC) encryption in Flutter?
问题描述
I want to decrypt a very long base64 string of an encrypted JSON file, in which I'm provided with key and iv. And I'm not using the default PKCS7 padding instead I'm keeping the padding null in the encryption part. AES 256 encryption is of CBC mode.
With the help of "encrypt" dart package. I've tried decoding it, but the speed was very, very slow. But the solution I tried was natively configured respectively on Android & iOS, but It wasn't working on that long base64 encrypted string.
//This is some native code I wrote for iOS (Objective-C)
(NSString *)decrypt:(NSString *)text {
NSString *result =
[text stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSData *decodedBase64Data = [[NSData alloc]
initWithBase64EncodedString:result options:0]; //Decode Base64
NSData *decodedAESData = [decodedBase64Data
AES256DecryptedDataWithKey:rd_key iv:rd_iv]; //Decode AES 256
result = [[NSString alloc] initWithData:decodedAESData
encoding:NSUTF8StringEncoding];
return result;
}
Is there any faster or a native solution to this problem? as I'm not able to decrypt the whole base64 encrypted string.
Base64 encypted String = "...2Btn9j6DjFOFgN2gUgVWv8!2FE94hmTZqge6wFMWCMBwRKu!
2BhaUSbip!2Brxa0tF5JqzVukbz4cbWZE6NGNgrA5BAeNHh3RVFBuoOG!2F!2Fiw!2BmsUob4W5ab9
P0lnHhPU9hk2qlfbj1ydS6m9OYYFwl!2F1QXAJ2I6lVZ81HYzeupP42!2BxqIx3zyURHZwQsCuOZ!
2BYits!2FqBC!2BSvAfiCUCeEOSqaAaLjbxXNAaIrtHRh3B9boAPESTxTKzUSC!2Bhpa72xk7
Dby8cl0MlflPAc9P2ihO3SD5GNVm9HWIjMga41OUvw1xMsgqqe5G5YnsNOom57cnLkj
JJhxsnfgnqaKxpAK0fdsov3f6!2FRDAVrSQledg4PWpQpNw9PCmIpzvk6!2wCbHck8
OlJm!2Br7NI9FNTfhJ2YceXohNkAZPkWW!2F2j9egRHNhbZNxGZoFnVE!2FgP1Zyqd6R
8Ma3b!2BhqCCWT4ZoSXXals26jVtkCMU5NA!2FWfxi6LbbsukyS9ViNj3gP8eCUH1!2Fbq
nLWXRfN03yqDcjM9tTFvSjorbqvf0sI0Go7crwJGaX7ODB4C!2FWcZ8plUTmqTZI!2BNUE
QKlxvGd24Vf!2B!2Br5ZvzvcM3Ew3CEw4JM1IZb30mqFEgFAt8dv08fj!2FRsQYt8PfK!2
r0ucWIAXVNz0ZySX6lgSza0ZHMSot!2BpUzt0Ru8vUuALL1g5xoEgh1l4yyjs2Dmxz4mJ4
0PNxdvye1FIjY!...";
解决方案
推荐阅读
- python - python中的自动秒表
- migration - 我可以只使用 AgnsGraph 来迁移数据吗?
- serilog - 使用 Serilog 将消息模板用于消息属性
- lua - Lua - 如何从结果中删除超过 1
- html - 模糊的 SVG 图像
- javascript - 如何在多个图像的悬停时更改图像
- javascript - 如何使用 JavaScript 获取嵌套数组中特定值的最大值和最小值?
- c++ - 如何捕捉任何 C++ 标准异常?
- mysql - MySQL Workbench 无法连接到数据库服务器(Heroku、JawsDB)
- xslt - 如何在 XSLT 的 XML 输出中编写纯空格文本节点