

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# (Optional) Erstellen Sie ein Schema (fortgeschrittene Benutzer)
<a name="create-schema"></a>

Das manuelle Erstellen eines Schemas ist für fortgeschrittene Benutzer vorgesehen.

Im Folgenden finden Sie eine Beschreibung des JSON-Schemadateiformats für Eingabedateien mit oder ohne Spaltenüberschriften. Fortgeschrittene Benutzer können das Schema bei Bedarf direkt schreiben oder ändern.

**Anmerkung**  
Der C3R-Verschlüsselungsclient kann Sie bei der Erstellung eines Schemas entweder durch den unter beschriebenen interaktiven Prozess [Beispiel: Generieren Sie ein Verschlüsselungsschema mit sealed Spaltenfingerprint, und cleartext](gen-encryption-schema-csv.md#gen-encryption-schema) oder durch die Erstellung einer Stub-Vorlage unterstützen.

## Schemas für zugeordnete und positionierte Tabellen
<a name="mapped-and-positional-schemas"></a>

Im folgenden Abschnitt werden zwei Arten von Tabellenschemas beschrieben: 
+ **Zugeordnetes Tabellenschema** — Dieses Schema wird für die Verschlüsselung von CSV-Dateien mit einer Kopfzeile und Dateien verwendet. Apache Parquet
+ **Positionstabellenschema — Dieses Schema** wird zum Verschlüsseln von CSV-Dateien ohne Kopfzeile verwendet.

Der C3R-Verschlüsselungsclient kann eine tabellarische Datei für eine Zusammenarbeit verschlüsseln. Dazu muss er über eine entsprechende Schemadatei verfügen, die angibt, wie die verschlüsselte Ausgabe aus der Eingabe abgeleitet werden soll.

Der C3R-Verschlüsselungsclient kann helfen, ein Schema für eine `INPUT` Datei zu generieren, indem er den Befehl C3R-Verschlüsselungsclient Schema in der Befehlszeile ausführt. Ein Beispiel für einen Befehl ist. `java -jar c3r-cli.jar schema --interactive INPUT`

Das Schema spezifiziert die folgenden Informationen: 

1. Welche Quellspalten werden anhand ihrer Header-Namen (zugeordnete Schemas) oder ihrer Position (Positionsschemas) welchen transformierten Spalten in der Ausgabedatei zugeordnet

1. Welche Zielspalten sollen erhalten bleiben cleartext

1. Welche Zielspalten sollen für SELECT Abfragen verschlüsselt werden

1. Welche Zielspalten sollen für JOIN Abfragen verschlüsselt werden

Diese Informationen sind in einer tabellenspezifischen JSON-Schemadatei kodiert, die aus einem einzigen Objekt besteht, dessen `headerRow` Feld ein boolescher Wert ist. Der Wert muss `true` für Parquet Dateien und CSV-Dateien mit einer Kopfzeile gelten, andernfalls. `false` 

### Zugeordnetes Tabellenschema
<a name="mapped-schemas"></a>

Das zugeordnete Schema hat die folgende Form.

```
{
  "headerRow": true,
  "columns": [
    {
      "sourceHeader": STRING,
      "targetHeader": STRING,
      "type": TYPE,
      "pad": PAD
    },
    ...
  ]
}
```

Falls `headerRow` ja`true`, ist das nächste Feld im Objekt`columns`, das eine Reihe von Spaltenschemas enthält, die Quellkopfzeilen Zielüberschriften zuordnen (d. h. JSON-Objekte, die beschreiben, was die Ausgabespalten enthalten sollen). 
+ `sourceHeader`— Der `STRING` Header-Name der Quellspalte, aus der die Daten abgeleitet wurden. 
**Anmerkung**  
Dieselbe Quellspalte kann für mehrere Zielspalten verwendet werden.  
Eine Spalte aus der Eingabedatei, die nicht `sourceHeader` irgendwo im Schema aufgeführt ist, erscheint nicht in der Ausgabedatei. 
+ `targetHeader`— Der `STRING` Header-Name der entsprechenden Spalte in der Ausgabedatei. 
**Anmerkung**  
Dieses Feld ist für zugeordnete Schemas optional. Wenn dieses Feld weggelassen wird, `sourceHeader` wird das für den Header-Namen in der Ausgabe wiederverwendet. Entweder `_fingerprint` oder `_sealed` wird angehängt, wenn es sich bei der Ausgabespalte um eine fingerprint Spalte bzw. sealed Spalte handelt. 
+ `type`— Die `TYPE` der Zielspalte in der Ausgabedatei. Das heißt, eine von `cleartext``sealed`, oder `fingerprint` hängt davon ab, wie die Spalte in der Kollaboration verwendet wird. 
+ `pad`— Ein Feld eines Spaltenschemaobjekts, das nur vorhanden ist, wenn es vorhanden `TYPE` ist`sealed`. Sein entsprechender Wert von `PAD` ist ein Objekt, das beschreibt, wie die Daten aufgefüllt werden sollen, bevor sie verschlüsselt werden.

  ```
  {
    "type": PAD_TYPE,
    "length": INT
  }
  ```

  Sie geben die Auffüllung vor der Verschlüsselung an `type` und `length` werden wie folgt verwendet: 
  + `PAD_TYPE`as `none` — Auf die Daten der Spalte wird kein Auffüllen angewendet und das `length` Feld ist nicht zutreffend (d. h. es wird weggelassen).
  + `PAD_TYPE`as `fixed` — Die Daten der Spalte werden auf die angegebene Anzahl `length` von Byte aufgefüllt.
  + `PAD_TYPE`as `max` — Die Daten der Spalte werden auf die Größe der Bytelänge des längsten Werts zuzüglich weiterer `length` Byte aufgefüllt.

Im Folgenden finden Sie ein Beispiel für ein zugeordnetes Schema mit einer Spalte jedes Typs.

```
{
  "headerRow": true,
  "columns": [
    {
      "sourceHeader": "FullName",
      "targetHeader": "name",
      "type": "cleartext"
    },
    {
      "sourceHeader": "City",
      "targetHeader": "city_sealed",
      "type": "sealed",
      "pad": {
        "type": "max",
        "length": 16
      }
    },
    {
      "sourceHeader": "PhoneNumber",
      "targetHeader": "phone_number_fingerprint",
      "type": "fingerprint"
    },
    {
      "sourceHeader": "PhoneNumber",
      "targetHeader": "phone_number_sealed",
      "type": "sealed",
      "pad": {
        "type": "fixed",
        "length": 20
      }
    }
  ]
}
```

Als komplexeres Beispiel finden Sie im Folgenden eine CSV-Beispieldatei mit Headern. 

```
FirstName,LastName,Address,City,State,PhoneNumber,Title,Level,Notes
Jorge,Souza,12345 Mills Rd,Anytown,SC,703-555-1234,CEO,10,
Paulo,Santos,0 Street,Anytown,MD,404-555-111,CIO,9,This is a really long note that could really be a paragraph
Mateo,Jackson,1 Two St,Anytown,NY,304-555-1324,COO,9,""
Terry,Whitlock4 N St,Anytown,VA,407-555-8888,EA,7,Secret notes
Diego,Ramirez,9 Hollows Rd,Anytown,VA,407-555-1222,SDE I,4,null
John,Doe,8 Hollows Rd,Anytown,VA,407-555-4321,SDE I,4,Jane's younger brother
Jane,Doe,8 Hollows Rd,Anytown,VA,407-555-4322,SDE II,5,John's older sister
```

Im folgenden Beispiel für ein zugeordnetes Schema sind die Spalten `FirstName` und `LastName` Spalten. `cleartext` Die `State` Spalte ist als `fingerprint` Spalte und als `sealed` Spalte mit einer Auffüllung von verschlüsselt. `none` Die übrigen Spalten werden weggelassen. 

```
{
  "headerRow": true,
  "columns": [
    {
      "sourceHeader": "FirstName",
      "targetHeader": "GivenName",
      "type": "cleartext"
    },
    {
      "sourceHeader": "LastName",
      "targetHeader": "Surname",
      "type": "cleartext"
    },
    {
      "sourceHeader": "State",
      "targetHeader": "State_Join",
      "type": "fingerprint"
    },
    {
      "sourceHeader": "State",
      "targetHeader": "State",
      "type": "sealed",
      "pad": {
        "type": "none"
      }
    }
  ]
}
```

Im Folgenden finden Sie die CSV-Datei, die sich aus dem zugewiesenen Schema ergibt. 

```
givenname,surname,state_fingerprint,state
John,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:FQ3n3Ahv9BQQNWQGcugeHzHYzEZE1vapHa2Uu4SRgSAtZ3qObjPA4TcsHt+BOkMKBcnHWI13BeGG/SBqmj7vKpI=
Paulo,Santos,01:hmac:CHF4eIrtTNgAooU9v4h9Qjc+txBnMidQTjdjWuaDTTA=,01:enc:KZ5n5GtaXACco65AXk48BQO2durDNR2ULc4YxmMC8NaZZKKJiksU1IwFadAvV4iBQ1Bus5TU5c4biez3bilfTY8=
Mateo,Jackson,01:hmac:iIRnjfNBzryusIJ1w35lgNzeY1RQ1bSfq6PDHW8Xrbk=,01:enc:mLKpS5HIOSgphdEsrzhEdIp/eN9nBO2gAbIygt4OFn4LalYn9Xyj/XUWXlmn8zFe2T4kyDTD8kGOvpQEUGxAUFk=
Diego,Ramirez,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:rmZhT98Zm+IIGw1UTjMIJP4IrW/AAltBLMXcHvnYfRgmWP623VFQ6aUnhsb2MDqEw4G5Uwg5rKKZepUxx5uKbfk=
Jorge,Souza,01:hmac:3BxJdXiFFyZ8HBbYNqqEhBVqhNOd7s2ZiKUe7QiTyo8=,01:enc:vVaqWC1VRbhvkf8gnuR7q0zxVPcvEjuaglYz34+KyyLcGZLpAmsDUc6wZ07f2KvHoOySqRsEU7dG1QfdHYcTSWE=
Terry,Whitlock01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:3c9VEWbODO/xbQjdGuccLvI7oZTBdPU+SyrJIyr2kudfAxbuMQ2uRdU/q7rbgyJjxZS8M2U35ILJf/lDgTyg7cM=
Jane,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:9RWv46YLveykeNZ/G0NdlYFg+AVdOnu05hHyAYTQkPLHnyX+0/jbzD/g9ZT8GCgVE9aB5bV4ooJIXHGBVMXcjrQ=
```

### Positionstabellenschema
<a name="positional-schemas"></a>

Das Positionsschema hat die folgende Form.

```
{
  "headerRow": false,
  "columns": [
    [
      {
        "targetHeader": STRING,
        "type": TYPE,
        "pad": PAD
      },
      {
        "targetHeader": STRING,
        "type": TYPE,
        "pad": PAD
      }
    ],
    [],
    ...
  ]
}
```

Falls `headerRow` ja`false`, ist das nächste Feld im Objekt`columns`, das eine Reihe von Einträgen enthält. Jeder Eintrag ist selbst ein Array von null oder mehr positionellen Spaltenschemas (kein `sourceHeader` Feld). Dabei handelt es sich um JSON-Objekte, die beschreiben, was die Ausgabe enthalten soll. 
+ `sourceHeader`— Der `STRING` Header-Name der Quellspalte, aus der die Daten abgeleitet werden. 
**Anmerkung**  
Dieses Feld muss in Positionsschemas weggelassen werden. In Positionsschemas wird die Quellspalte aus dem entsprechenden Index der Spalte in der Schemadatei abgeleitet.
+ `targetHeader`— Der `STRING` Header-Name der entsprechenden Spalte in der Ausgabedatei. 
**Anmerkung**  
Dieses Feld ist für Positionsschemas erforderlich. 
+ `type`— Die `TYPE` der Zielspalte in der Ausgabedatei. Das heißt, eine von `cleartext``sealed`, oder `fingerprint` hängt davon ab, wie die Spalte in der Kollaboration verwendet wird. 
+ `pad`— Ein Feld eines Spaltenschemaobjekts, das nur vorhanden ist, wenn es vorhanden `TYPE` ist`sealed`. Sein entsprechender Wert von `PAD` ist ein Objekt, das beschreibt, wie die Daten aufgefüllt werden sollen, bevor sie verschlüsselt werden.

  ```
  {
    "type": PAD_TYPE,
    "length": INT
  }
  ```

  Sie geben die Auffüllung vor der Verschlüsselung an `type` und `length` werden wie folgt verwendet: 
  + `PAD_TYPE`as `none` — Auf die Daten der Spalte wird kein Auffüllen angewendet und das `length` Feld ist nicht zutreffend (d. h. es wird weggelassen).
  + `PAD_TYPE`as `fixed` — Die Daten der Spalte werden auf die angegebene Anzahl `length` von Byte aufgefüllt.
  + `PAD_TYPE`as `max` — Die Daten der Spalte werden auf die Größe der Bytelänge des längsten Werts zuzüglich weiterer `length` Byte aufgefüllt.
**Anmerkung**  
`fixed`ist nützlich, wenn Sie im Voraus eine Obergrenze für die Bytegröße der Spaltendaten kennen. Ein Fehler wird ausgelöst, wenn Daten in dieser Spalte länger als angegeben sind`length`.   
`max`ist praktisch, wenn die genaue Größe der Eingabedaten unbekannt ist, da es unabhängig von der Größe der Daten funktioniert. `max`Erfordert jedoch zusätzliche Verarbeitungszeit, da die Daten zweimal verschlüsselt werden. `max`verschlüsselt die Daten einmal, wenn sie in die temporäre Datei eingelesen werden, und einmal, nachdem der längste Dateneintrag in der Spalte bekannt ist.   
Außerdem wird die Länge des längsten Werts zwischen Aufrufen des Clients nicht gespeichert. Wenn Sie planen, Ihre Daten stapelweise oder regelmäßig neue Daten zu verschlüsseln, beachten Sie, dass die daraus resultierenden Chiffretext-Längen je nach Batch variieren können.

Im Folgenden finden Sie ein Beispiel für ein Positionsschema.

```
{
  "headerRow": false,
  "columns": [
    [
      {
        "targetHeader": "name",
        "type": "cleartext"
      }
    ],
    [
      {
        "targetHeader": "city_sealed",
        "type": "sealed",
        "pad": {
          "type": "max",
          "length": 16
        }
      }
    ],
    [
      {
        "targetHeader": "phone_number_fingerprint",
        "type": "fingerprint"
      },
      {
        "targetHeader": "phone_number_sealed",
        "type": "sealed",
        "pad": {
          "type": "fixed",
          "length": 20
        }
      }
    ]
  ]
}
```

Im Folgenden finden Sie ein Beispiel für eine CSV-Beispieldatei, falls sie nicht die erste Zeile mit den Überschriften hatte. 

```
Jorge,Souza,12345 Mills Rd,Anytown,SC, 703 -555 -1234,CEO, 10,
Paulo,Santos, 0 Street,Anytown,MD, 404-555-111,CIO, 9,This is a really long note that could really be a paragraph
Mateo,Jackson, 1 Two St,Anytown,NY, 304-555-1324,COO, 9, ""
Terry,Whitlock, 4 N St,Anytown,VA, 407-555-8888,EA, 7,Secret notes
Diego,Ramirez, 9 Hollows Rd,Anytown,VA, 407-555-1222,SDE I, 4,null
John,Doe, 8 Hollows Rd,Anytown,VA, 407-555-4321,SDE I, 4,Jane's younger brother
Jane,Doe, 8 Hollows Rd,Anytown,VA, 407-555-4322,SDE II, 5,John's older sister
```

Das Positionsschema hat die folgende Form. 

```
{
  "headerRow": false,
  "columns": [
    [
      {
        "targetHeader": "GivenName",
        "type": "cleartext"
      }
    ],
    [
      {
        "targetHeader": "Surname",
        "type": "cleartext"
      }
    ],
    [],
    [],
    [
      {
        "targetHeader": "State_Join",
        "type": "fingerprint"
      },
      {
        "targetHeader": "State",
        "type": "sealed",
        "pad": {
          "type": "none"
        }
      }
    ],
    [],
    [],
    [],
    []
  ]
}
```

Das vorherige Schema erzeugt die folgende Ausgabedatei mit einer Kopfzeile, die die angegebenen Ziel-Header enthält. 

```
givenname,surname,state_fingerprint,state
Mateo,Jackson,01:hmac:iIRnjfNBzryusIJ1w35lgNzeY1RQ1bSfq6PDHW8Xrbk=,01:enc:ENS6QD3cMVl9vQEGfe9MNWfR0UOupchswZFr94zOMG5jY/Q8m/Y5SA89dJwKpT5rGPp8e36h6klwDoslpFzGvU0=
Jorge,Souza,01:hmac:3BxJdXiFFyZ8HBbYNqqEhBVqhNOd7s2ZiKUe7QiTyo8=,01:enc:LKo0zirq2++XEIIIMNRjAsGMdyWUDwYaum0B+IFP+rUf1BNeZDJjtFe1Z+zbZfXQWwJy52Rt7HqvAb2WIK1oMmk=
Paulo,Santos,01:hmac:CHF4eIrtTNgAooU9v4h9Qjc+txBnMidQTjdjWuaDTTA=,01:enc:MyQKyWxJ9kvK1xDQQtXlUNwv3F+yrBRr0xrUY/1BGg5KFgOn9pK+MZ7g+ZNqZEPcPz4lht1u0t/wbTaqzOCLXFQ=
Jane,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:Pd8sbITBfb0/ttUB4svVsgoYkDfnDvgkvxzeci0Yxq54rLSwccy1o3/B50C3cpkkn56dovCwzgmmPNwrmCmYtb4=
Terry,Whitlock01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:Qmtzu3B3GAXKh2KkRYTiEAaMopYedsSdF2e/ADUiBQ9kv2CxKPzWyYTD3ztmKPMka19dHre5VhUHNpO3O+j1AQ8=
Diego,Ramirez,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:ysdg+GHKdeZrS/geBIooOEPLHG68MsWpx1dh3xjb+fG5rmFmqUcJLNuuYBHhHAlxchM2WVeV1fmHkBX3mvZNvkc=
John,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:9uX0wZuO7kAPAx+Hf6uvQownkWqFSKtWS7gQIJSe5aXFquKWCK6yZN0X5Ea2N3bn03Uj1kh0agDWoiP9FRZGJA4=
```