我只想輸入字串并按解密它。這是我的應用程式,但我無法解密字串原因_cipher.text型別“字串”。它的型別應該是“加密”
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);因為它是加密的。
uj5u.com熱心網友回復:
您不能直接解密字串。您需要將加密的檔案傳遞給解密,否則在大多數情況下會出現塊大小錯誤。
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);
}
如果您手動將密碼設定為base16或base64字串,您可以這樣做:
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);
}
編輯:如果您從用戶那里獲取密碼輸入,您需要使用加密器驗證它是否是一個base16或base64僅然后您可以繼續使用Encrypted.fromBase64(cipher)或Encrypted.fromBase16(cipher)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334989.html
