今天,在阅读了很多关于ring-LWE密钥交换的内容后,我决定在java中实现它以查看它是否有效。不是现实世界的实现,只是为了看数学是否成功。我的假设是,给定某种多项式环,编写代码会很简单。我的假设结果证明是错误的。我搜索互联网寻找基本的单变量多项式环库,我找到了this。它看起来很简单,并且有一些jUnit test already代码正在传递。我从here复制了参数。简而言之,Z_(2^23 - 1) / (x^1024 + 1)
。
我跟着Regev's basic reconciliation method并运行了代码。即使没有错误,交换的密钥也不匹配。显然,出了点问题,我确信它来自我的代码,而不是多项式环形库。也许我不明白环-LWE的一些基本原理。我在这里附上了代码:
This是GitHub存储库的链接。任何帮助,将不胜感激。我不知道我做错了什么。