flutter - 解密即将到来的文本 flutter

标签 flutter encryption aes

我只想输入字符串并按下解密它。 这是我的应用程序,但我无法解密字符串,因为 _cipher.text 类型为“String”。它的类型应该是“加密”

onPressed: ()  {
                setState(() {
                  final k = Key.fromUtf8('1234567891011123');
                  final iv = IV.fromLength(16);
                  final encrypter = Encrypter(AES(k));
                  final decrypted = encrypter.decrypt(_cipher.text, iv: iv);
                  _plain.text = decrypted;
                });
              },

我不想使用final crypted = encrypter.encrypt(_cipher.text, iv: iv);,因为它是加密的。

最佳答案

你不能直接解密字符串。您需要将加密后的内容传入解密中,否则在大多数情况下会出现 block 大小错误。

import 'package:encrypt/encrypt.dart';

void main() {
  final cipher = 'Lorem ipsum dolor sit amet';
  final k = Key.fromUtf8('1234567891011123');
  final iv = IV.fromLength(16);

  final encrypter = Encrypter(AES(k));

  final encrypted = encrypter.encrypt(cipher, iv: iv);
  final decrypted = encrypter.decrypt(encrypted, iv: iv);

  print(encrypted.base64);
  print(decrypted);
}

如果您已手动将密码设置为 base16base64 字符串,则可以执行以下操作:

import 'package:encrypt/encrypt.dart';

void main() {
  final cipher = 'Xg4+gtUDU0Hd9uMUWU7IJtjxvocKzIOJwumyzbY5n40=';
  final k = Key.fromUtf8('1234567891011123');
  final iv = IV.fromLength(16);

  final encrypter = Encrypter(AES(k));

  final decrypted = encrypter.decrypt(Encrypted.fromBase64(cipher), iv: iv);

  print(decrypted);
}

编辑:如果您从用户处获取密码输入,则需要使用加密器验证它是否是 base16base64,然后您才能继续解密使用Encrypted.fromBase64(cipher)Encrypted.fromBase16(cipher)

关于flutter - 解密即将到来的文本 flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69698919/

相关文章:

visual-studio - 防止 Visual Studio 加密文件

python - 如何使用 AES-256-CCM 在 php 中通过 python 解密加密文本

encryption - AES(128 或 256)加密是否会扩展数据?如果是这样,幅度是多少?

asynchronous - 如何在获取 Flutter 中的当前位置时显示加载微调器?

CS50 Vigenere - 奇怪的图案

swift - 使用 RSA 从 Swift 到 C# 进行加密

java - 服务器(Java - Cipher)和客户端(Javascript - CryptoJS)之间的 AES

Flutter - 如何检查应用程序是否有新版本?

flutter - 我收到错误消息:在此设置小部件上方找不到正确的Provider <User>(已修复)

调用 setState() 时 Flutter ListView 不会改变