Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created November 25, 2022 17:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/afc04bbd4c70f524bb15e10bff521ecb to your computer and use it in GitHub Desktop.
Save parzibyte/afc04bbd4c70f524bb15e10bff521ecb to your computer and use it in GitHub Desktop.
import 'package:encrypt/encrypt.dart';
var ClavePrivada = """-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----""";
var ClavePublica = """-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAoVc7pmMUBtF9q2WURsBs
KK+KhrTPj6q3F5w3IMSPQ6b2SLuloHSm/FaLDMDIXEuvnIaNAzZKNoxeL/2iKmMa
rmWtBeREph15tH8/THRYzx+JhhAS6A/V3lhrEDDpTADMAvPLTjDffNz/rfZq5gLS
46q7sG4uwgOopHxl/mv551a0GulLdKXO8Sv1HNZr1ulijYVZ1dIwlXAY+3s5NpTQ
pzczmYnHaT+zOZ4Od6MnG5vdJXXj1PwfrzAUBv/qzFU8FzJ11O0RLZtb94YJAm+F
c3J/Z/JhzWyRwfIiUggqDJepgQ4nzsOoaj8ignXXhKhF7KcRkxS/eI+aH9RzXwvV
SFd82Dz63J6rnGIbyp0pJQVbw+f1E3uP32QvFdZqpJWQBYwK6OZwTcpznri4c6PO
jHlN2OQqG+IIvkCMLsFX6OGD+t/bvfn8yAyuPFY93xYoRkQ2dy8hJeGJNa09i9GP
liY5YUskF4rhZ7yFqT2OxhJaSAHfha7cAdh2D04rlvtbAgMBAAE=
-----END PUBLIC KEY-----""";
void main(List<String> argumentos) async {
var mensaje = "Hola mundo desde parzibyte.me";
var firmado = firmar(ClavePrivada, mensaje);
bool coincide = verificarFirma(firmado, mensaje, ClavePublica);
print("Firmado: $firmado");
print("¿El mensaje firmado es auténtico?: $coincide");
}
bool verificarFirma(
String firmado, String plano, String clavePublicaComoCadena) {
final clavePublica = RSAKeyParser().parse(clavePublicaComoCadena);
final firmador =
Signer(RSASigner(RSASignDigest.SHA256, publicKey: clavePublica));
var coinciden = firmador.verify64(plano, firmado);
return coinciden;
}
String firmar(String clavePrivadaParaFirmarComoCadena, String mensaje) {
final clavePrivada = RSAKeyParser().parse(clavePrivadaParaFirmarComoCadena);
final firmador =
Signer(RSASigner(RSASignDigest.SHA256, privateKey: clavePrivada));
String mensajeFirmado = firmador.sign(mensaje).base64;
return mensajeFirmado;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment