Flutter插件ninja的使用_ninja是一个用于dart Flutter加密、解密、签名和验证消息的Dart库
Flutter插件ninja的使用_ninja是一个用于dart Flutter加密、解密、签名和验证消息的Dart库
由于插件ninja
的具体功能描述为undefined
,本文将基于其提供的加密和解密功能进行探讨,并提供完整的示例代码。
ninja库简介
ninja
是一个用于加密、解密、签名和验证消息的Dart库。它支持多种加密算法,包括RSA和AES等。
RSA加密与解密
OAEP加密
import 'package:ninja/ninja.dart';
void main() {
final privateKeyPem = '''
-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMv7Reawnxr0DfYN3IZbb5ih/XJGeLWDv7WuhTlie//c2TDXw/mW
914VFyoBfxQxAezSj8YpuADiTwqDZl13wKMCAwEAAQJAYaTrFT8/KpvhgwOnqPlk
NmB0/psVdW6X+tSMGag3S4cFid3nLkN384N6tZ+na1VWNkLy32Ndpxo6pQq4NSAb
YQIhAPNlJsV+Snpg+JftgviV5+jOKY03bx29GsZF+umN6hD/AiEA1ouXAO2mVGRk
BuoGXe3o/d5AOXj41vTB8D6IUGu8bF0CIQC6zah7LRmGYYSKPk0l8w+hmxFDBAex
IGE7SZxwwm2iCwIhAInnDbe2CbyjDrx2/oKvopxTmDqY7HHWvzX6K8pthZ6tAiAw
w+DJoSx81QQpD8gY/BXjovadVtVROALaFFvdmN64sw==
-----END RSA PRIVATE KEY-----''';
final privateKey = RSAPrivateKey.fromPEM(privateKeyPem);
final publicKey = privateKey.toPublicKey;
String encrypted = publicKey.encryptOaepToBase64(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit...');
print('Encrypted: $encrypted');
String decrypted = privateKey.decryptOaepToUtf8(encrypted);
print('Decrypted: $decrypted');
}
PKCS1v15加密
void main() {
final privateKeyPem = '''
-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMv7Reawnxr0DfYN3IZbb5ih/XJGeLWDv7WuhTlie//c2TDXw/mW
914VFyoBfxQxAezSj8YpuADiTwqDZl13wKMCAwEAAQJAYaTrFT8/KpvhgwOnqPlk
NmB0/psVdW6X+tSMGag3S4cFid3nLkN384N6tZ+na1VWNkLy32Ndpxo6pQq4NSAb
YQIhAPNlJsV+Snpg+JftgviV5+jOKY03bx29GsZF+umN6hD/AiEA1ouXAO2mVGRk
BuoGXe3o/d5AOXj41vTB8D6IUGu8bF0CIQC6zah7LRmGYYSKPk0l8w+hmxFDBAex
IGE7SZxwwm2iCwIhAInnDbe2CbyjDrx2/oKvopxTmDqY7HHWvzX6K8pthZ6tAiAw
w+DJoSx81QQpD8gY/BXjovadVtVROALaFFvdmN64sw==
-----END RSA PRIVATE KEY-----''';
final privateKey = RSAPrivateKey.fromPEM(privateKeyPem);
final publicKey = privateKey.toPublicKey;
String encrypted = publicKey.encryptToBase64(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit...');
print('Encrypted: $encrypted');
String decrypted = privateKey.decryptToUtf8(encrypted);
print('Decrypted: $decrypted');
}
签名与验证
RSASSA-PSS签名
void main() {
final privateKeyPem = '''
-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMv7Reawnxr0DfYN3IZbb5ih/XJGeLWDv7WuhTlie//c2TDXw/mW
914VFyoBfxQxAezSj8YpuADiTwqDZl13wKMCAwEAAQJAYaTrFT8/KpvhgwOnqPlk
NmB0/psVdW6X+tSMGag3S4cFid3nLkN384N6tZ+na1VWNkLy32Ndpxo6pQq4NSAb
YQIhAPNlJsV+Snpg+JftgviV5+jOKY03bx29GsZF+umN6hD/AiEA1ouXAO2mVGRk
BuoGXe3o/d5AOXj41vTB8D6IUGu8bF0CIQC6zah7LRmGYYSKPk0l8w+hmxFDBAex
IGE7SZxwwm2iCwIhAInnDbe2CbyjDrx2/oKvopxTmDqY7HHWvzX6K8pthZ6tAiAw
w+DJoSx81QQpD8gY/BXjovadVtVROALaFFvdmN64sw==
-----END RSA PRIVATE KEY-----''';
final privateKey = RSAPrivateKey.fromPEM(privateKeyPem);
final publicKey = privateKey.toPublicKey;
final message = 'abcdefghijklmnopqrstuvwxyz\n';
final signature = privateKey.signPssToBase64(message);
print('Signature: $signature');
print('Verification result: ${publicKey.verifySsaPss(signature, message)}');
}
RSASSA-PKCS1-V1_5签名
void main() {
final privateKeyPem = '''
-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMv7Reawnxr0DfYN3IZbb5ih/XJGeLWDv7WuhTlie//c2TDXw/mW
914VFyoBfxQxAezSj8YpuADiTwqDZl13wKMCAwEAAQJAYaTrFT8/KpvhgwOnqPlk
NmB0/psVdW6X+tSMGag3S4cFid3nLkN384N6tZ+na1VWNkLy32Ndpxo6pQq4NSAb
YQIhAPNlJsV+Snpg+JftgviV5+jOKY03bx29GsZF+umN6hD/AiEA1ouXAO2mVGRk
BuoGXe3o/d5AOXj41vTB8D6IUGu8bF0CIQC6zah7LRmGYYSKPk0l8w+hmxFDBAex
IGE7SZxwwm2iCwIhAInnDbe2CbyjDrx2/oKvopxTmDqY7HHWvzX6K8pthZ6tAiAw
w+DJoSx81QQpD8gY/BXjovadVtVROALaFFvdmN64sw==
-----END RSA PRIVATE KEY-----''';
final privateKey = RSAPrivateKey.fromPEM(privateKeyPem);
final publicKey = privateKey.toPublicKey;
final message = 'abcdefghijklmnopqrstuvwxyz\n';
final signature = privateKey.signSsaPkcs1v15ToBase64(message);
print('Signature: $signature');
print('Verification result: ${publicKey.verifySsaPkcs1v15(signature, message)}');
}
AES加密与解密
AES加密
void main() {
final aes = AESKey(Uint8List.fromList(List.generate(16, (i) => i)));
String encoded = aes.encryptToBase64('Dart');
print('Encoded: $encoded');
String decoded = aes.decryptToUtf8(encoded);
print('Decoded: $decoded');
}
结论
ninja
插件提供了丰富的加密和解密功能,适用于需要数据安全的应用场景。通过上述示例代码,您可以快速上手并应用这些功能到您的Flutter项目中。希望这些示例能帮助您更好地理解和使用ninja
插件。
更多关于Flutter插件ninja的使用_ninja是一个用于dart Flutter加密、解密、签名和验证消息的Dart库的实战教程也可以访问 https://www.itying.com/category-92-b0.html