经典论文阅读笔记——The Learning with Errors Problem


前言

我们现有的公钥方法面临被量子计算机破解的巨大危险。被提议作为量子计算机的一个难题的方法之一是错误学习问题(LWE)。
LWE是量子鲁棒性密码学方法。
我们创建一个密钥值 (s) 和另一个值 (e)。接下来我们选择A[]并计算
B[] = A[] *s + e
A[] 和 B[] 的值成为我们的公钥。如果 s 是单个值,则 A 和 B 是一维矩阵。如果我们选择 s 为一维矩阵,则 A 为二维矩阵,B 为一维矩阵。
错误学习是 Oded Regev 在 2005 年 [ 论文] 定义的一种方法。它涉及找到解决以下问题的值的难度:
B = A × s + e
公钥:A和B
密钥:s
相关解释ppt

一、LWE and Ring LWE

LWE

1.概念介绍

一个基本的LWE:

import numpy as np
import sys
q=13 //mod q
A=np.array([
[4 ,1, 11, 10],
[5, 5 ,9 ,5],
[3, 9 ,0 ,10],
[1, 3 ,3 ,2],
[12, 7 ,3 ,4],
[6, 5 ,11 ,4],
[3, 3, 5, 0]])
sA = np.array([[6],[9],[11],[11]])
eA = np.array([[0],[-1],[1],[1],[1],[0],[-1]])
bA = np.matmul(A,sA)%q
print(bA)
bA = np.add(bA,eA)%q

print("Print output\n",bA)

Public Key Encryption with Learning With Errors (LWE):

import sys
import numpy as np
import random
import math

nvals=20

B=[]
e=[]
s = 20
message = 1

q=97
A = random.sample(range(q), nvals)

for x in range(0,len(A)):
	e.append(random.randint(1,4))
	B.append((A[x]*s+e[x])%q)

print("\n------Parameters and keys-------")
print("Message to send:\t",message)
print("Public Key (A):\t",A)
print("Public Key (B):\t",B)
print("Errors (e):\t\t",e)
print("Secret key:\t\t",s)
print("Prime number:\t\t",q)

print("\n------Sampling Process from public key-------")


sample= random.sample(range(nvals-1), nvals//4)
print("Sampling",sample)

u=0
v=0

for x in range(0,len(sample)):
	print("[",A[sample[x]],B[sample[x]],"]", end=' ')
	u=u+(A[sample[x]])
	v= v+B[sample[x]]

v=v+math.floor(q//2)*message

v = v%q
u = u%q

print()
print("\n------Calculation of u and v -----------------")
print("u:\t\t",u)
print("v:\t\t",v)

res=(v-s*u) % q

print("Result is\t",res)

if (res>q/2):
	print("Message is a 1")
else:
	print("Message is a 0")

2.读入数据

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题可能是由于你的Android项目中存在一些编译错误导致的。你可以尝试以下几个步骤来解决这个问题: 1. 检查你的代码,看看是否存在语法错误或者其他编译错误。 2. 清除你的项目并重新构建它。你可以在Eclipse中选择Project -> Clean来清除你的项目。 3. 确保你的Android SDK和Eclipse插件都是最新版本。你可以在Eclipse中选择Help -> Check for Updates来检查更新。 如果以上步骤都没有解决你的问题,你可以尝试重新安装Eclipse和Android SDK,并重新导入你的项目。 ### 回答2: 当eclipse运行android application时出现"launching jj has encountered problem errors occurred during the build"错误提示时,这通常是由于项目中存在一些编译错误或配置问题所导致的。 首先,我们可以检查项目代码中是否存在语法错误或逻辑错误,这可能会导致编译器无法正确地构建应用程序。在eclipse中,我们可以通过查看控制台窗口或“问题”视图来查看详细的编译错误信息,并尝试修复这些错误。 其次,检查项目的构建配置是否正确。在eclipse中,可以通过右键单击项目并选择“属性”来访问项目的属性设置。确保项目的构建路径、SDK版本和依赖库等设置都正确。 另外,可能还需要确保安装了正确版本的ADT插件和相应的Android SDK。在eclipse中,可以通过“帮助”菜单中的“安装新软件”选项来查看和安装所需的插件和SDK。 如果上述方法仍然无法解决问题,可以尝试清理项目并重新构建应用程序。在eclipse中,可以选择“项目”菜单中的“清理”选项,然后重新构建项目。 总之,当eclipse运行android application时弹出"launching jj has encountered problem errors occurred during the build"错误提示时,我们需要仔细检查项目中的编译错误和配置问题,并尝试修复它们。如果问题仍然存在,可以尝试清理项目并重新构建应用程序。 ### 回答3: 当Eclipse运行Android应用程序时出现"launching jj has encountered problem errors occurred during the build"错误,可能有以下几个原因: 1. 缺少依赖库:请确保项目中所需的所有依赖库都已正确添加和配置。检查项目的构建路径和依赖项,并确保所有相关的库文件都存在且正确链接。 2. 项目中存在错误:在问题发生之前,请先确保项目中没有任何错误或警告。在Eclipse的问题视图中查看并解决所有问题。 3. Android SDK版本不匹配:请确保项目的目标SDK版本与您的Android SDK版本相匹配。在Eclipse中打开项目的AndroidManifest.xml文件,检查<uses-sdk>元素中的android:minSdkVersion和android:targetSdkVersion属性是否正确设置。 4. 缺少运行时环境:请检查您的电脑上是否安装了适当版本的Java Development Kit(JDK)。在Eclipse中,打开Window -> Preferences -> Java -> Installed JREs,确保JRE的路径设置正确。 5. 项目构建配置错误:在Eclipse的"项目"菜单中,选择"构建自动"来确保项目在每次更改后都会自动构建。如果仍然遇到问题,尝试清理项目并重新构建。 如果以上解决方法仍然没有解决问题,建议尝试以下进一步的操作: 1. 重启Eclipse:有时,重启Eclipse可以解决临时的构建问题。 2. 清理Eclipse缓存:在Eclipse中选择"项目"菜单,然后选择"清理",并选中"清理项目"。 3. 更新Eclipse和Android SDK插件:确保您正在使用最新版本的Eclipse和Android SDK插件。可以通过Eclipse的"帮助"菜单中的"检查更新"选项进行更新。 如果问题仍未解决,建议搜索与具体错误消息相对应的详细错误信息,以获取更多解决方案或寻求其他开发者的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值