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的参考实现相关推荐

  1. zbar下条形码和二维码的识别与解码Ⅲ|2021SC@SDUSC

    2021SC@SDUSC 4.对非标准的QR二维码图片,进行定位,然后用Zbar解码显示. 这里主要参考opencv二维码识别解码_nickchao的IT生涯-CSDN博客_opencv二维码识别的博 ...

  2. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(八)plots.py-1

    2021SC@SDUSC 前言 这篇分析plot.py文件,就如其名称一样,主要是一些用以展示的代码,也不是核心代码 外部库 from copy import copy from pathlib im ...

  3. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(三)

    2021SC@SDUSC 目录 一.概述 二.代码分析 1.Update() 2.Draw() 3.Layout() 一.概述 本文将介绍ebiten在RunGame函数中逐帧执行的Update()方 ...

  4. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(四)

    2021SC@SDUSC 目录 一.概述 二.代码分析 1.graphics.QuadVertices() 2.mipmap.Mipmap() 3.i.mipmap.DrawTriangles() 一 ...

  5. 2021SC@SDUSC HBase(十三)项目代码分析——WAL写入

    2021SC@SDUSC 目录 一.简述 二.机制 三.线程模型 四.具体实现 五.总结 一.简述 Hbase 的 WAL 机制是保证 hbase 使用 lsm 树存储模型把随机写转化成顺序写,并从内 ...

  6. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>

    2021SC@SDUSC Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接 实例要求: Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求 ...

  7. 2021SC@SDUSC基于人工智能的多肽药物分析问题(六)

    基于人工智能的多肽药物分析问题(六) 2021SC@SDUSC 1. 卷积神经网络 1.1 卷积神经网络优势 在学习卷积神经网络之前,使用的是全连接神经网络,但是: 如果用全连接神经网络处理大尺寸图像 ...

  8. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(十三)metrics.py-1

    2021SC@SDUSC 前言 这篇分析metrics.py文件,这个文件是用来计算评估指标,包括mAP.混淆矩阵.IOU相关的函数. fitness函数 def fitness(x):# Model ...

  9. <2021SC@SDUSC>博客(5)山东大学软件工程应用与实践JPress代码分析(四)

    2021SC@SDUSC 前言 在前面三篇文章中,我对 JPress 项目的基础框架 JFinal 和 JBoot 在使用层面进行了拆解与分析.在接下来的文章中,我将在代码层面对 JPress 项目中 ...

最新文章

  1. 手机调试打开控制台方法vconsole
  2. 前端学习(1974)vue之电商管理系统电商系统之完成删除的操作
  3. java线程立刻执行_Java 线程调用start()后会立即执行run()方法吗?
  4. 一份阿里员工的Java问题排查工具单
  5. 远嫁的女人有没有偷偷哭过?有何经历?
  6. Linux基础——Linux 基本指令 nano 和 cat
  7. 【CCCC】L2-007 家庭房产 (25分),并查集,结构统计
  8. Spark Shuffle 中 JVM 内存使用及配置内幕详情
  9. 百度文库下载文档,没财富值,没下载卷也能下载
  10. dbv工具连接oracle10g,10.2.2 DBV工具
  11. c语言模拟键盘自动按键,C语言实现模拟键盘按键事件
  12. linux系统如何运行ansys,ANSYS在linux下使用
  13. 宏康 HY17 时钟 串口
  14. 2. ZK客户端与服务端建立连接的过程(基于NIO)
  15. 聊一聊JAVA指针压缩的实现原理(图文并茂,让你秒懂)
  16. python沙盒逃逸
  17. Python网络爬虫爬淘宝无法爬取问题的解决方法
  18. 硬件设计——BUCK电路仿真设计
  19. 基于QT封装的音视频播放时间轴控件
  20. java超市收银系统mysql,java课程设计(含数据库代码)

热门文章

  1. 二维码使用之二维码扫描
  2. 前台商品条码效验算法
  3. opencv4 java 验证码噪点 8邻域降噪
  4. C语言实战题目:从键盘输入数字,计算其中正数的个数,并且计算所有正数的和
  5. UC3846的结构功能及引脚功能介绍
  6. 原生js实现http请求
  7. DELPHI2010的IDHTTP控件与DELPHI7的IDHTTP控件有什么不一样呀?GET事件DELPHI7正常,DELPHI2010就有问题!
  8. 一剑霜寒十四州——浅析内存分区(浅显)
  9. git commit --amend的使用
  10. 高德离线地图TMS服务教程