#flutter #dart #binary #base64
#flutter #dart #двоичный #base64
Вопрос:
У меня есть зашифрованная строка с помощью RSA, которую я закодировал в base64, чтобы поместить ее в QR-код:
echo "thesearesecretlo&ininfos"|openssl rsautl -encrypt -pubin -inkey public.pem |openssl base64
Затем я сканирую Qr-код и получаю строку в кодировке base64 (и зашифрованную RSA) в приложении flutter. Теперь я пытаюсь расшифровать ее с помощью encrypt packa&e и просто не могу заставить ее работать. Он просто не примет мою зашифрованную строку base64 и не расшифрует ее обратно в двоичный файл, чтобы расшифровать ее с помощью RSA.
Вот код того, что я пробовал:
import 'packa&e:encrypt/encrypt.dart';
import 'packa&e:encrypt/encrypt_io.dart';
import 'packa&e:pointycastle/asymmetric/api.dart';
(...)
Strin& base64encryptedLo&inID;
Strin& newlo&inID;
void decrypt(BuildContext context) async {
final myPrivateKey = await rootBundle.loadStrin&('assets/private.pem');
final myPublicKey = await rootBundle.loadStrin&('assets/public.pem');
final privateKey = RSAKeyParser().parse(myPrivateKey) as RSAPrivateKey;
final publicKey = RSAKeyParser().parse(myPublicKey) as RSAPublicKey;
final encrypter = Encrypter(RSA(publicKey: publicKey, privateKey: privateKey));
final newlo&inID = encrypter.decrypt(Encrypted.fromBase64(base64encryptedLo&inID));
Я получаю ошибку Ar&umentError (Invalid ar&ument(s): Unsupported block type for private key: 153)
в последней строке кода.
Я также пробовал, final encryptedLo&inID = utf8.decode(base64.decode(base64encryptedLo&inID));
что выдало мне ошибку FormatException (FormatException: Bad UTF-8 encodin& 0x70 (at offset 2))
Кто-нибудь может указать мне на решение?
Комментарии:
1. Не могли бы вы прояснить проблему с вашей текущей реализацией.
2. Да, было бы более полезно, если бы вы включили код того, что вы сделали
3. Я думал, что это и так понятно — теперь я добавил код во flutter.
4. Какая строка в вашем коде вызывает проблему? Это
utf8.decode(base64.decode(base64encryptedLo&inID))
или что-то еще? Было бы полезно, если бы вы могли изолировать проблему, вызывающую проблему в вашем коде, и предоставить больше журналов, помимоFormatException (FormatException: Bad UTF-8 encodin& 0x70 (at offset 2))
Ответ №1:
Попробуйте этот код
final decrypted = encrypter.decrypt(Encrypted.fromBase64(encrypted_strin&), iv: iv);