我们可以使用Microsoft SEAL / PySEAL库对加密数据执行除法运算吗

时间:2019-07-13 06:55:00

标签: python c++ math seal

我正在使用PySEAL库,它是Microsoft SEAL同态加密库的一个分支,用于在加密数据上实现机器学习算法。为此,我需要将数字相除。在examples.py源代码中,有一些示例执行加法,减法和乘法,但不执行除法。是否可以使用PySEAL库进行划分?如果不是,是否有办法解决这个库中使用其他算术运算将两个数相除的技巧?

1 个答案:

答案 0 :(得分:1)

SEAL不支持密文之间的分隔。但是,如果您希望将密文除以明文,则可以使用乘法乘以反数,如下所示:

from seal import *

# context is a SEALContext object
# encoder is a FractionalEncoder object
# encryptor is an Encryptor object
# evaluator is an Evaluator object
# decryptor is a Decryptor object

# Encrypt a float
cipher = Ciphertext()
encryptor.encrypt(encoder.encode(7.0), cipher)

# Divide that float by 10
div_by_ten = encoder.encode(0.1)
evaluator.multiply_plain(cipher, div_by_ten)

# Decrypt result
plain = Plaintext()
decryptor.decrypt(cipher, plain)
result = encoder.decode(plain)
print(result)
>> 0.6999999999999996

请参见PySEAL Python examples中的example_weighted_average函数。