面试题答案
一键面试优先考虑的加密算法
- AES(高级加密标准):
- 原因:AES是一种对称加密算法,被广泛应用且安全性高,能有效保护数据机密性。它有128、192和256位密钥长度可选,目前未被破解,适用于各类数据加密场景。
- Flutter实现方式:可使用
encrypt
库。首先在pubspec.yaml
文件中添加依赖encrypt: ^6.0.0
。示例代码如下:
import 'package:encrypt/encrypt.dart';
void main() {
final key = Key.fromLength(16);
final iv = IV.fromLength(16);
final encrypter = Encrypter(AES(key));
final encrypted = encrypter.encrypt('Hello World', iv: iv);
print(encrypted.base64);
}
- **性能特点**:加解密速度快,效率高,适合对性能要求较高且需要保证数据安全的移动应用场景。由于是对称加密,密钥管理需要谨慎。
2. RSA(Rivest-Shamir-Adleman):
- 原因:RSA是非对称加密算法,用于密钥交换和数字签名。它解决了对称加密中密钥分发的难题,适合在iOS和Android平台上进行安全通信时的初始密钥交换等场景。
- Flutter实现方式:同样可借助encrypt
库。添加依赖后,示例代码如下:
import 'package:encrypt/encrypt.dart';
void main() {
final privateKey = PrivateKey('-----BEGIN RSA PRIVATE KEY-----...');
final publicKey = PublicKey('-----BEGIN PUBLIC KEY-----...');
final encrypter = Encrypter(RSA(publicKey: publicKey, privateKey: privateKey));
final encrypted = encrypter.encrypt('Hello World');
print(encrypted.base64);
}
- **性能特点**:安全性高,但加解密速度相比AES较慢,因为涉及复杂的数学运算。常用于对少量关键数据(如密钥)的加密传输。