relinearize

Engine.relinearize(ciphertext, relinearization_key)
곱셈으로 다항식이 3개가 된 암호문을 2개로 재선형화를 합니다.
  • 인풋:
    • Ciphertext: 곱셈으로 다항식이 3개가 된 경우만 처리가 가능합니다.
    • RelinearizationKey
  • 아웃풋:
    • Ciphertext
from desilofhe import Engine

engine = Engine()
secret_key = engine.create_secret_key()
public_key = engine.create_public_key(secret_key)
relinearization_key = engine.create_relinearization_key(secret_key)

message1 = [1, 2, 3]
ciphertext1 = engine.encrypt(message1, public_key)

message2 = [4, 5, 6]
ciphertext2 = engine.encrypt(message2, public_key)

multiplied = engine.multiply(ciphertext1, ciphertext2)
relinearized = engine.relinearize(multiplied, relinearization_key)
Engine.relinearize(ciphertext, evaluation_key)
연산 키에 포함된 재선형화 키를 사용하여, 곱셈으로 다항식이 3개가 된 암호문을 2개로 재선형화를 합니다.
  • 인풋:
    • Ciphertext: 곱셈으로 다항식이 3개가 된 경우만 처리가 가능합니다.
    • EvaluationKey
  • 아웃풋:
    • Ciphertext

Warning

  • 행렬 엔진은 이 연산을 아직 지원하지 않습니다.
from desilofhe import Engine

engine = Engine()
secret_key = engine.create_secret_key()
public_key = engine.create_public_key(secret_key)
evaluation_key = engine.create_evaluation_key(secret_key)

message1 = [1, 2, 3]
ciphertext1 = engine.encrypt(message1, public_key)

message2 = [4, 5, 6]
ciphertext2 = engine.encrypt(message2, public_key)

multiplied = engine.multiply(ciphertext1, ciphertext2)
relinearized = engine.relinearize(multiplied, evaluation_key)