2021SC@SDUSC 后量子密码NTRU的参考实现
2021SC@SDUSC
PQ Crypto Catalog
https://github.com/kriskwiatkowski/pqc
提交给 NIST PQC 标准化流程的量子安全签名和 KEM 方案。
该项目目标是在 C 和 Rust 中提供易于使用的 API 以支持实验。 该代码源自提交给 NIST 后量子加密标准化的 PQClean 项目 。
用户不应期望此代码提供任何级别的安全性。 该库不打算用于实时生产系统。
支持
Name | NIST Round | x86 optimized |
---|---|---|
Kyber | 3 | x |
NTRU | 3 | x |
SABER | 3 | x |
FrodoKEM | 3 | |
NTRU Prime | 3 | x |
HQC-RMRS | 3 | x |
Dilithium | 3 | x |
Falcon | 3 | |
Rainbow | 3 | |
SPHINCS+ SHA256/SHAKE256 | 3 | x |
SIKE/p434 | 3 | x |
构建
CMake 用于构建库:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
构建输出两个库,一个静态 libpqc_s.a和动态 libpqc.so,可与项目链接。
API
库提供了简单的 API,包装了 PQClean。 例如,要使用 KEM,应按以下方式调用库:
#include <pqc/pqc.h>const params_t *p = pqc_kem_alg_by_id(KYBER512);
std::vector<uint8_t> ct(ciphertext_bsz(p));
std::vector<uint8_t> ss1(shared_secret_bsz(p));
std::vector<uint8_t> ss2(shared_secret_bsz(p));
std::vector<uint8_t> sk(private_key_bsz(p));
std::vector<uint8_t> pk(public_key_bsz(p));pqc_keygen(p, pk.data(), sk.data());
pqc_kem_encapsulate(p, ct.data(), ss1.data(), pk.data());
pqc_kem_decapsulate(p, ss2.data(), ct.data(), sk.data());p = pqc_sig_alg_by_id(DILITHIUM2);
size_t sigsz = sig.capacity();
pqc_keygen(p, pk.data(), sk.data());
pqc_sig_create(p, sig.data(), &sigsz, msg.data(), msg.size(), sk.data());
pqc_sig_verify(p, sig.data(), sig.size(), msg.data(), msg.size(), pk.data());
Rust 构建
cd test/katrunner
curl http://amongbytes.com/~flowher/permalinks/kat.zip --output kat.zip
unzip kat.zip
cargo run -- --katdir KAT
2021SC@SDUSC 后量子密码NTRU的参考实现相关推荐
- zbar下条形码和二维码的识别与解码Ⅲ|2021SC@SDUSC
2021SC@SDUSC 4.对非标准的QR二维码图片,进行定位,然后用Zbar解码显示. 这里主要参考opencv二维码识别解码_nickchao的IT生涯-CSDN博客_opencv二维码识别的博 ...
- 2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(八)plots.py-1
2021SC@SDUSC 前言 这篇分析plot.py文件,就如其名称一样,主要是一些用以展示的代码,也不是核心代码 外部库 from copy import copy from pathlib im ...
- 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(三)
2021SC@SDUSC 目录 一.概述 二.代码分析 1.Update() 2.Draw() 3.Layout() 一.概述 本文将介绍ebiten在RunGame函数中逐帧执行的Update()方 ...
- 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(四)
2021SC@SDUSC 目录 一.概述 二.代码分析 1.graphics.QuadVertices() 2.mipmap.Mipmap() 3.i.mipmap.DrawTriangles() 一 ...
- 2021SC@SDUSC HBase(十三)项目代码分析——WAL写入
2021SC@SDUSC 目录 一.简述 二.机制 三.线程模型 四.具体实现 五.总结 一.简述 Hbase 的 WAL 机制是保证 hbase 使用 lsm 树存储模型把随机写转化成顺序写,并从内 ...
- Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>
2021SC@SDUSC Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接 实例要求: Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求 ...
- 2021SC@SDUSC基于人工智能的多肽药物分析问题(六)
基于人工智能的多肽药物分析问题(六) 2021SC@SDUSC 1. 卷积神经网络 1.1 卷积神经网络优势 在学习卷积神经网络之前,使用的是全连接神经网络,但是: 如果用全连接神经网络处理大尺寸图像 ...
- 2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(十三)metrics.py-1
2021SC@SDUSC 前言 这篇分析metrics.py文件,这个文件是用来计算评估指标,包括mAP.混淆矩阵.IOU相关的函数. fitness函数 def fitness(x):# Model ...
- <2021SC@SDUSC>博客(5)山东大学软件工程应用与实践JPress代码分析(四)
2021SC@SDUSC 前言 在前面三篇文章中,我对 JPress 项目的基础框架 JFinal 和 JBoot 在使用层面进行了拆解与分析.在接下来的文章中,我将在代码层面对 JPress 项目中 ...
最新文章
- 手机调试打开控制台方法vconsole
- 前端学习(1974)vue之电商管理系统电商系统之完成删除的操作
- java线程立刻执行_Java 线程调用start()后会立即执行run()方法吗?
- 一份阿里员工的Java问题排查工具单
- 远嫁的女人有没有偷偷哭过?有何经历?
- Linux基础——Linux 基本指令 nano 和 cat
- 【CCCC】L2-007 家庭房产 (25分),并查集,结构统计
- Spark Shuffle 中 JVM 内存使用及配置内幕详情
- 百度文库下载文档,没财富值,没下载卷也能下载
- dbv工具连接oracle10g,10.2.2 DBV工具
- c语言模拟键盘自动按键,C语言实现模拟键盘按键事件
- linux系统如何运行ansys,ANSYS在linux下使用
- 宏康 HY17 时钟 串口
- 2. ZK客户端与服务端建立连接的过程(基于NIO)
- 聊一聊JAVA指针压缩的实现原理(图文并茂,让你秒懂)
- python沙盒逃逸
- Python网络爬虫爬淘宝无法爬取问题的解决方法
- 硬件设计——BUCK电路仿真设计
- 基于QT封装的音视频播放时间轴控件
- java超市收银系统mysql,java课程设计(含数据库代码)