sql >> Database teknologi >  >> RDS >> PostgreSQL

Simple Encrypted Arithmetic Library (SEAL) og segl::Ciphertext-variablen

Kort svar er, at der ikke er andre måder at få adgang til chiffertekstdataene i SEAL. Markøren returneret af Ciphertext::data vil give dig direkte adgang til chiffertekstdataene og giver dig i den forstand mulighed for at lave enhver form for beregning på dem, f.eks. konvertere til en menneskelig læsbar streng, hvis du af en eller anden grund ønsker at gøre det.

For at gøre noget forståeligt skal du selvfølgelig kende chiffertekstens datalayout. I BFV-skemaet består en chiffertekst af et par polynomier (c0 , c1 ) med stor (størrelse coeff_modulus ) koefficienter. Da det er ubelejligt at arbejde på polynomier med så store koefficienter, bruger SEAL 2.3.1 i stedet en sammensat coeff_modulus og gemmer både c0 og c1 modulo hver af primfaktorerne specificeret i coeff_modulus (betegn disse faktorer q1 ,q2 ,...,qk ). Hver qi passer ind i et 64-bit ord, så alle disse 2k polynomier har koefficienter for ordstørrelse.

Chiffertekstkoefficientdatalayoutet er som følger (sammenhængende i hukommelsen):

[ c0 mod q1 ][ c0 mod q2 ]...[ c0 mod qk ][ c1 mod q1 ][ c1 mod q2 ]...[ c1 mod qk ]

hvor hver [ ci mod qj ] ser ud som

[ c0 [0] mod qj ][ c1 [0] mod qj ]...[ cn-1 [0] mod qj ]

Her brugte jeg ci [k] for at angive graden k-koefficienten af ​​ci . Bemærk, at hver koefficient er gemt i en uint64_t .

Ciphertext::data returnerer en pointer til den konstante koefficient for c0 polynomium med hensyn til det første modul i din coeff_modulus , dvs. til c0 [0] mod q1 . Ud over disse koefficientdata indeholder en Ciphertext et par andre felter, som du kan læse ved hjælp af medlemsfunktionerne.




  1. MySQL COUNT FORSKEL

  2. SELECT max(x) returnerer null; hvordan får jeg det til at returnere 0?

  3. Hvordan starter man spring-boot app uden at være afhængig af databasen?

  4. CS50:LIKE operator, variabel substitution med % udvidelse