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 项目中 ...
最新文章
- UVA11309 Counting Chaos【Ad Hoc】
- C#读写者线程(用AutoResetEvent实现同步)(转载)
- QT学习之路七(qt的数据库操作)
- python就业班完整视频_('传智 Python基础班+就业班 最新完整视频教程',)
- 用python对《三国演义》的人物出场进行统计
- 项目组织与团队管理——社会惰化
- 安卓Android公交查询系统app资源分享
- 电阻色环转换为阻值对照表
- setenv设置环境变量_setenv命令教程在Linux中添加,删除和更改环境变量
- 【产品经理学习笔记】Part 13 产品运营案例分析
- 有史以来影响世界的颠覆性技术 | 未来的高附加值颠覆性技术产业
- Mybatis方法入参处理
- ol xyz 加载天地图_Openlayers3 加载百度地图,天地图
- 龙格现象 图像对比及Python代码实现
- operator*() 和 operator-()
- centos7搭建DNS服务器的详细过程总结
- Kafka性能测试工具
- EMV/PBOC之 9f5d和9f79的区别
- linux命令行git记住密码
- 宝可梦小游戏_Java_控制端——总结
热门文章
- 使用GemBox.Spreadsheet控件操作Excel文件
- 利用Power BI计算组,设计个性化数据标签
- stm32实现flash参数存储
- 你们用过KSC的沐浴露吗,感觉怎么样啊?
- 极简主义风格的响应式个人简历模版PSD+HTML打包下载
- php开发微信商户平台支付宝支付,不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
- 多个自变量因变量中介变量做Amos
- 阿尔巴尼的计算机科学,纽约州立大学阿尔巴尼分校硕士申请
- 轻雨物联网科技 - 智能门禁系统
- Javs 反射 之 获取全部属性