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

回到顶部