Flutter异或运算插件xor_dart的使用
Flutter异或运算插件 xor_dart
的使用
xor_dart
是一个纯 Dart 实现的 XOR 加密库,支持使用或不使用对称密钥进行加密和解密操作。以下是该插件的详细使用方法和示例代码。
安装
在 pubspec.yaml
文件中添加依赖:
dependencies:
xor_dart: ^latest_version
然后运行 flutter pub get
来安装插件。
使用示例
1. 使用密钥进行加密和解密
import 'package:xor_dart/xor_dart.dart';
void main() {
var xor = Xor('_a_random_key_');
var plain = 'You are so handsome!';
var encode = xor.encode(plain);
var decode = xor.decode(encode);
print('>>> plain: $plain, encode: $encode, decode: $decode');
print('>>> decryption result is correct: ${plain == decode}'); // true
}
2. 不使用密钥进行加密和解密
字节数组加密解密
import 'dart:convert';
import 'package:xor_dart/xor_dart.dart';
void main() {
var content = '1234567890';
var bytes = utf8.encode(content);
// To bytes
var en = CipherXor.encrypt(bytes);
var de = CipherXor.decrypt(en);
print('content: $bytes, encrypted: $en, decrypted: $de');
// To strings
var encrypted = CipherXor.encryptToBase64(content);
var decrypted = CipherXor.decryptFromBase64(encrypted);
print('content: $content, encrypted: $encrypted, decrypted: $decrypted');
print('>>>>>>>>> decryption result is correct:: ${content == decrypted}'); // true
}
3. 对文件进行加密和解密
import 'dart:io';
import 'package:xor_dart/xor_dart.dart';
// i.e:
// dart ~/xor.dart/example/main.dart -en nohup.zip nohup.zip.en
// dart ~/xor.dart/example/main.dart -de nohup.zip.en nohup.out.zip
void main(List<String> args) {
print('args: $args');
var action = args.first.toLowerCase();
var src = args[1];
var dst = args[2];
/// XOR encrypt a file
if (action.contains('-en')) {
File(dst).writeAsBytesSync(CipherXor.encrypt(File(src).readAsBytesSync()));
}
/// XOR decrypt a file
if (action.contains('-de')) {
File(dst).writeAsBytesSync(CipherXor.decrypt(File(src).readAsBytesSync()));
}
}
完整示例 Demo
以下是一个完整的示例代码,包含使用密钥和不使用密钥的加密解密操作以及文件加密解密功能:
import 'dart:convert';
import 'dart:io';
import 'package:xor_dart/xor_dart.dart';
void _main() {
/// with secret key
var xor = Xor('_a_random_key_');
var plain = 'You are so handsome!';
var encode = xor.encode(plain);
var decode = xor.decode(encode);
print('>>> plain: $plain, encode: $encode, decode: $decode');
print('>>> decryption result is correct: ${plain == decode}');
/// without secret key
var content = '1234567890';
var encrypted = CipherXor.encryptToBase64(content);
var decrypted = CipherXor.decryptFromBase64(encrypted);
print('content: $content, encrypted: $encrypted, decrypted: $decrypted');
print('>>> decryption result is correct:: ${content == decrypted}');
}
// i.e:
// dart ~/xor.dart/example/main.dart -en nohup.zip nohup.zip.en
// dart ~/xor.dart/example/main.dart -de nohup.zip.en nohup.out.zip
void main(List<String> args) {
if (args.isEmpty) {
_main(); // 如果没有参数,则执行简单的加密解密示例
return;
}
print('args: $args');
var action = args.first.toLowerCase();
var src = args[1];
var dst = args[2];
/// XOR encrypt a file
if (action.contains('-en')) {
File(dst).writeAsBytesSync(CipherXor.encrypt(File(src).readAsBytesSync()));
print('File encrypted successfully.');
}
/// XOR decrypt a file
if (action.contains('-de')) {
File(dst).writeAsBytesSync(CipherXor.decrypt(File(src).readAsBytesSync()));
print('File decrypted successfully.');
}
}
通过以上代码,您可以轻松地在 Flutter 应用中实现基于 XOR 的加密和解密操作。希望这些示例能帮助您更好地理解和使用 xor_dart
插件。
更多关于Flutter异或运算插件xor_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复