← Projekte

pii-toolkit-cy

Mit pii-toolkit-cy schwärze ich persönliche Daten und verschlüssle Node.js-Felder via redact() und createPiiCipher(), ohne Laufzeitabhängigkeiten.

  • Node.js
  • AES-256-GCM
  • scrypt
  • Zero dependencies
  • ESM

Das Problem

Ich habe sie für zwei getrennte Aufgaben entwickelt: personenbezogene Daten aus Freitext entfernen, bevor er ein System verlässt, und Identitätsfelder bei der Speicherung verschlüsseln.

Schwärzungsmuster können Bestellnummern oder Zahlungsbeträge mit personenbezogenen Daten verwechseln. Bei der Feldverschlüsselung vermeide ich wiederverwendete IVs und schnelle Hashfunktionen als Ersatz für eine Schlüsselableitung.

Der Ansatz

In redact() nutze ich zurückhaltende Muster für E-Mails, Zahlungskarten, IBANs und Telefonnummern. Die Muster sind darauf ausgelegt, bloße Ganzzahlen wie Bestellnummern unverändert zu lassen.

In createPiiCipher() nutze ich AES-256-GCM mit einem neuen zufälligen IV für jeden Wert und scrypt zur Schlüsselableitung. Die authentifizierte Entschlüsselung prüft auf Manipulationen.

Ich stelle ESM-Exporte und TypeScript-Typen ohne Laufzeitabhängigkeiten bereit.

Das Ergebnis

Ich stelle den Code auf GitHub bereit. Ich nutze redact() vor der Weitergabe von Freitext und createPiiCipher() für Felder, die verschlüsselt gespeichert werden sollen. Die Bibliothek ist nicht auf npm veröffentlicht.