零知识证明libsnark实践
实验四零知识证明libsnark实践姓名:徐慧聪
学号:2023103793
1. 实验要求
部署libsnark:libsnark 是实现了 zkSNARK 模式的 C++ 库
编写程序,生成零知识证明,证明自己拥有某个问题的解
数独
多项式等式
2. libsnark部署2.1 实验环境
Ubuntu 22.04
g++-9、gcc-9
2.2 部署按照环境要求部署libsnark,因为部署比较复杂,这里我们参考这篇博客进行部署,https://blog.csdn.net/matlabdd1/article/details/123637302
3. 代码实现3.1 数独参考GitHub实现代码
validateInput_gadget:验证输入是否在集合$\{v_1…v_n\}$中,判断$(x - v_1) … (x - v_n) = 0$
checkEquality_gadget:验证行列块的值是否不同,判断$\prod (inputs[i] - inputs[j]) * inv = 1$
sudoku_gadget:接收数独的输入,验证输入、行、列、字块是否有效
...
椭圆曲线国密算法实现
实验三椭圆曲线国密算法实现姓名:徐慧聪
学号:2023103793
1. 实验要求实现SM2,SM3,SM4算法
2. 代码实现2.1 SM3SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
因为SM2需要调用SM3,所以我们先实现SM3算法。
一些辅助函数
12345678910111213141516171819202122232425262728293031323334353637383940def left_rotate(x, n): # 将 x 的二进制表示左移 n 位,并将最左侧的位移动到最右侧 n = n % 32 # 取模确保位移量在 0 到 31 之间 return ((x << n) | (x >> (32 - n))) & 0xFFFFFFFF # 确保结果在 32 位范围内def P0(X): shift_9_left = left_rotate(X, 9) shift_17_left = left_rotate(X, 17) result = X ^ s ...
Crypto++ 使用
实验一常用密码学原语的C++代码使用
1. Crypto++部署与测试Crypto++部署本文采用Windows子系统wsl2进行部署测试
从官网下载Crypto++ (https://www.cryptopp.com/)
make -j4
make install PREFIX=./path 使用path指定安装路径
g++ hw1.cpp -I /usr/local/bin/include/cryptopp -o hw1.exe /usr/local/bin/lib/libcryptopp.a 使用g++进行编译
Crypto++测试
使用SHA384进行测试
这里利用StringSource的方法进行函数调用
12345678910111213141516171819202122// 使用SHA384进行加密void encryptSHA384(string& plain){ std::string cipher, encoded; SHA384 hash; StringSource ss1(plain, true, new ...
流密码主要算法实现
实验二流密码主要算法实现姓名:徐慧聪
学号:2023103793
1. 实验环境
ubuntu 22.04
Python 3.10
文件结构(/dist/StreamCipher为可执行文件)
2. 代码实现2.1 Grain
LFSR存key
NFSR存全1
123456789101112131415161718192021222324252627282930313233class Grain128: def __init__(self, key): self.LFSR = key & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF self.NFSR = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF def clock(self): feedback_LFSR = (self.LFSR >> 7) & 1 ^ (self.LFSR >> 38) & 1 ^ (self.LFSR >> 70) & 1 ^ (s ...
滤波类状态估计方法
滤波类状态估计方法1. 前言1.1 现实中位置描述在生活中,我们经常需要描述位置信息。回顾我们的日常习惯,我们通常使用两种方法来描述位置:
一种是使用定位软件,如百度地图、卫星定位系统、甚至古代的指南针等等,它们会给我们一个精确信息,告知我们身处何处,距离目标有多少米,将位置精确为一个点。
然而,通常当我们向他人描述位置的时候,我们很少借助定位,而是会描述目标的粗略方位(如东西南北等),和我们的距离(大概二三百米),这样目标的位置则不是一个精确的点,而是一个环形的区域目标可能在这个区域任何一个地方出现,也就说位置信息变成了一个等可能概率模型。这便是概率状态估计的现实意义。
1.2 概率状态估计很多时候,我们描述一个物体的时候,它其实并不是物理意义上的一个质点,是一个有体积的实物,也就说质点是物体一个抽象,它将物体信息集中到一个点中。相反,我们也可以将这个点进行放大,那么其实这个物体只是说在这个点附近出现的可能性最高,它的信息分散在概率之中。
类似二维高斯分布和热力图,在点附近的概率和热力度最高,离点越远概率和热力越低。同时,当我们对位置描述的越精准,高斯分布的方差也就越小,变得更 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
幻梦
The world has kissed my soul with its pain, asking for its return in songs.
English Listening 179
INTRODUCTIONlearning from Mr Liu, I know some important word in English Listening Test, IETS.
I think it's very useful, so I try to make a note to familiar myself with these words.
All words come from the book by the teacher, Liu Hongbo.
theme: differentadjust, change, alter, modify, shift, revert
diversity, a variety of, a number of, a range of, various, different
transfer, move, relocate(搬迁,迁移)
emigrate, move, go away
similar, like , compare
particular, special ,in particular, especially ...