matrix_multiply

Engine.matrix_multiply(x, y, matrix_multiplication_key)
두 인자를 행렬 곱셈한 암호문을 반환합니다. 레벨을 소모합니다.
  • 인풋:
    • x: Plaintext or Ciphertext
    • y: Plaintext or Ciphertext
    • 인풋 둘 중 하나는 Ciphertext여야 합니다.
    • MatrixMultiplicationKey
  • 아웃풋:
    • Ciphertext

Warning

  • 벡터 엔진은 이 연산을 지원하지 않습니다.

Examples

암호문끼리의 행렬 곱셈

import numpy as np
from desilofhe import Engine

engine = Engine(form="matrix")
secret_key = engine.create_secret_key()
matrix_multiplication_key = engine.create_matrix_multiplication_key(secret_key)

message1 = np.ones(engine.shape)
ciphertext1 = engine.encrypt(message1, secret_key)

message2 = np.ones(engine.shape)
ciphertext2 = engine.encrypt(message2, secret_key)

multiplied = engine.matrix_multiply(
    ciphertext1, ciphertext2, matrix_multiplication_key
)

암호문과 평문의 행렬 곱셈

import numpy as np
from desilofhe import Engine

engine = Engine(form="matrix")
secret_key = engine.create_secret_key()
matrix_multiplication_key = engine.create_matrix_multiplication_key(secret_key)

message1 = np.ones(engine.shape)
ciphertext1 = engine.encrypt(message1, secret_key)

message2 = np.ones(engine.shape)
plaintext2 = engine.encode(message2)

multiplied = engine.matrix_multiply(
    ciphertext1, plaintext2, matrix_multiplication_key
)

평문과 암호문의 행렬 곱셈

import numpy as np
from desilofhe import Engine

engine = Engine(form="matrix")
secret_key = engine.create_secret_key()
matrix_multiplication_key = engine.create_matrix_multiplication_key(secret_key)

message1 = np.ones(engine.shape)
plaintext1 = engine.encode(message1)

message2 = np.ones(engine.shape)
ciphertext2 = engine.encrypt(message2, secret_key)

multiplied = engine.matrix_multiply(
    plaintext1, ciphertext2, matrix_multiplication_key
)