sql >> Databasteknik >  >> RDS >> PostgreSQL

Simple Encrypted Arithmetic Library (SEAL) och sigill::Ciphertext-variabeln

Kort svar är att det inte finns några andra sätt att komma åt chiffertextdata i SEAL. Pekaren returneras av Ciphertext::data ger dig direkt tillgång till chiffertextdata och låter dig i den meningen göra någon form av beräkning på den, t.ex. konvertera till en läsbar sträng om du av någon anledning skulle vilja göra det.

Naturligtvis för att göra något begripligt måste du känna till datalayouten för chiffertexten. I BFV-schemat består en chiffertext av ett par polynom (c0 , c1 ) med stor (storlek coeff_modulus ) koefficienter. Eftersom det är obekvämt att arbeta på polynom med så stora koefficienter, använder SEAL 2.3.1 istället en sammansatt coeff_modulus och lagrar både c0 och c1 modulo var och en av de primtalsfaktorer som anges i coeff_modulus (ange dessa faktorer q1 ,q2 ,...,qk ). Varje qi passar in i ett 64-bitars ord, så alla dessa 2k polynom har koefficienter för ordstorlek.

Chiffertextkoefficientens datalayout är som följer (sammanhängande i minnet):

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

där varje [ ci mod qj ] ser ut som

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

Här använde jag ci [k] för att beteckna graden k-koefficient för ci . Observera att varje koefficient lagras i en uint64_t .

Ciphertext::data returnerar en pekare till den konstanta koefficienten för c0 polynom med avseende på den första modulen i din coeff_modulus , dvs till c0 [0] mod q1 . Utöver denna koefficientdata innehåller en chiffertext några andra fält som du kan läsa med hjälp av medlemsfunktionerna.




  1. Hur hittar man tredje eller nᵗʰ högsta lön från lönetabellen?

  2. Timeout för OracleDataReader.Read-metoden

  3. Kör ProxySQL som en Helper Container på Kubernetes

  4. CEILING() Exempel i SQL Server