如何在flutter中加密字符串并在其他设备中解密此加密字符串?

尼特纽克

在此处输入图片说明

我找到了用于 flutter 的 encrypt 包来加密和解密消息,我成功地加密和解密,但没有成功地在如图所示的分离设备的 cas 中使用它。

这是一个例子,我用一个静态字符串和一个随机数组成一个纯文本,它允许更改生成的密钥,当我解密时,发现静态字符串与正则表达式匹配

var number = new Random();

 var random= number.nextInt(100); 

  final plainText = 'static_name$random';

  final key = Key.fromLength(16);
  final iv = IV.fromLength(8);
  final encrypter = Encrypter(AES(key));

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

  print(encrypted.base64);//my plaintext is encrypted fesesgesgneslg465esg6es4g
  print(decrypted); //my random plaintext is decrypted static_name$rnd

  //my regex match function

目前我没有找到如何输入我的加密密钥 (fesesgesgneslg465esg6es4g) 我搜索做类似的事情

//---------按下我生成一个我加密的随机密钥---- var rng = new Random();

 var rnd= rng.nextInt(100); //choisir le nombre max de contenu de la catégorie

  final plainText = 'static_name$rnd';

  final key = Key.fromLength(16);
  final iv = IV.fromLength(8);
  final encrypter = Encrypter(AES(key));

  final encrypted = encrypter.encrypt(plainText, iv: iv);

//output : 68e4sg68es4ges68g4

//---------用户在第二个设备上输入密钥(68e4sg68es4ges68g4) ----

encrypted=68e4sg68es4ges68g4;

  final key = Key.fromLength(16);
  final iv = IV.fromLength(8);
  final encrypter = Encrypter(AES(key));

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

我找不到如何解密我的密钥 (68e4sg68es4ges68g4)

简而言之,我成功地对输入进行了自动加密和解密,但没有成功地将生成的密钥手动添加到解密函数中。

理查德·希普

您尝试使用该encrypt软件包的方式存在严重问题通过使用,Key.forLength()您基本上是在使用0000000....000. IV 也一样。这不是一个非常安全的密钥!

在两台不同的机器之间使用加密系统时,您需要找到某种方式在它们之间共享密钥 - 所谓的“共享秘密”。您可以使用例如 PKKDF2 从“密码短语”生成它。或者您可以将随机字节字符串编译到代码中,但预计攻击者可以对您的代码进行逆向工程。

使用 AES,您不应该使用相同的密钥两次使用相同的 IV,这就是为什么密码系统通常在密钥交换期间唯一地生成密钥和初始 IV,然后使用某些东西(如消息序列号)来更改 IV 的原因用那个密钥加密的每条消息。

出于测试目的,像你这样的,你可能要产生一个固定的16位密钥,并使用随机数生成固定的16位四然后使用.fromBase64()构造函数。

var key = Key.fromBase64('yE9tgqNxWcYDTSPNM+EGQw=='); // obviously, insert your own value!
var iv = IV.fromBase64('8PzGKSMLuqSm0MVbviaWHA==');

在加密和解密应用程序中对 key 和 IV 使用相同的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章