使用tenseal库创建张量,然后可以使用类似numpy的索引方法来访问张量的元素、列或行。由于张量是加密的,因此需要在进行任何操作之前解密它们。以下是一个示例:
import tenseal as ts
import numpy as np
# 创建加密张量
ctx = ts.Context()
ctx.generate_galois_keys()
enc_arr = ts.bfv_vector(ctx, np.random.rand(100))
enc_arr.encrypt()
# 访问单个元素并解密
elem = enc_arr[5].decrypt()
print(elem)
# 访问一行并解密
row = np.asarray(enc_arr[10:20].decrypt())
print(row)
# 访问一列并解密
column = np.asarray([enc_arr[i].decrypt() for i in range(0,100,10)])
print(column)
这将输出一个大小为10x10的加密张量,然后分别访问第6个元素、第11~20个元素、第2列,并输出他们解密后的值。