首页 > 其他分享 >DSA

DSA

时间:2024-08-05 13:39:57浏览次数:7  
标签:randint int pow random import DSA mod

记录一下学习dsa
(目前只有基础,后续正在学习)
(本文只是个人并结合gpt的见解,只是初步学习,仅供参考)

DSA基础

参数生成

160位素数q

1024位素数p,p-1为q的倍数

随机选取h∈(0,p)

计算\(g=h^{(p-1)/q} \mod p\)

为什么?:

1、需要g是生成元(安全性)

p-1=kq q<k

即p存在一个子群,阶为q

使得g的阶为满足条件(\(g^q = 1\mod p\))的最小正整数q

\(g^q=(h^{(p-1)/q})^q= h^{p-1}= 1 \mod p\)

2、提高效率,模运算和求逆元都可以在模q下进行

密钥生成

随机选取私钥x∈(0,q)

计算公钥\(y=g^x \mod q\)

签名

利用私钥x签名

先对消息m进行哈希加密(一般为sha1)

随机选取数k∈(0,q)

计算\(r=(g^k \mod p)\mod q\)

计算\(s=k^{-1}*(H(m)+x*r)\mod q\)

生成签名对(r,s)

验签

利用公钥y验签

计算\(w=s^{-1} \mod q\)

计算\(u_1=H(m)*w\mod q \quad\)

计算\(u_2=r*w\mod q\)

计算\(v=(g^{u_1}*y^{u_2})\mod q\)

验证\(v==r\)

证明

\[v=(g^{u_1}*y^{u_2})=(g^{H(m)*w}*g^{x*r*w})=g^{(H(m)+x*r)*w}=g^{s*k*w}=g^k\mod q\\ \]

代码实现

from Crypto.Util.number import *
from gmpy2 import *
from hashlib import sha1
import random

# 参数生成
q=getPrime(160)
p=int(random.randint(2**863,2**864-1)*q+1)
while not isPrime(p) or p.bit_length() != 1024:
    p=int(random.randint(2**863,2**864-1)*q+1)
h=random.randint(1,p-1)
g=pow(h,(p-1)//q,p)
# print(pow(g,q,p))

# 密钥生成
x=random.randint(1,q-1)   # 私钥
y=pow(g,x,p)    # 公钥

# 签名
m=b'naby'
k=random.randint(1,q-1)   # 临时私钥
r=int(pow(g,k,p))%q
hm=bytes_to_long(sha1(m).digest())
s=(invert(k,q)*(hm+x*r))%q
# 签名对(r,s)

# 验签
w=invert(s,q)
u1=(hm*w)%q
u2=(r*w)%q
v=int(pow(g,u1,p)*pow(y,u2,p))%q

print(v==r)

ECDSA

(未完成)

标签:randint,int,pow,random,import,DSA,mod
From: https://www.cnblogs.com/naby/p/18343041

相关文章

  • GEE案例:Landsat 5、7、8影像构建1985-2023年rsei生态遥感指数详细代码
    之前关于RSEI的博客 GoogleEarthEngine(GEEÿ......
  • IDL根据Landsat QA波段去云处理【代码】
    IDL根据LandsatQA波段去云处理【代码】​landsatQA波段(质量评估波段)是Landsat卫星影像数据中的一个特殊波段,他在Landsat5-9的每个产品中都存在。虽然我们常用的Landsat影像数据有B1-B7波段,但QA波段并不是其中之一。它可以反映出云、云阴影、雪等类别的像素,常常应用在影像......
  • Java sshtools 生成的 EDDSA 签名与 Python 的 pycryptome 生成的签名不匹配
    我有一个python库,它使用pycryptodomelibrary使用openssh格式的ED25519私钥使用Ed25519算法对数据进行签名。然后需要使用sshtools库和相应的公钥在Java应用程序中验证签名。但是签名验证失败。约束:从文件中读取私钥/公钥很重要。我无法......
  • 通过 CDSAPI 下载 ERA5-Complete Reanalysis 会导致错误 43。怎么修?
    我正在使用flex_extract通过CDSAPI发送请求以获取ERA5完整再分析数据。我可以获取2018/08/09区域74/-24/9.875/60.375的数据,但更改日期或区域会导致以下错误。有谁知道问题是什么以及如何解决它?错误正在尝试从气候数据存储(CDS)下载ERA5数据时遇到错......
  • `useHeadSafe`:安全生成HTML头部元素
    title:useHeadSafe:安全生成HTML头部元素date:2024/7/17updated:2024/7/17author:cmdragonexcerpt:摘要:“useHeadSafe”是Vue.js组合函数,用于安全生成HTML头部元素,通过限制输入值格式避免XSS等安全风险,提供了安全值白名单确保只有安全属性被添加。categories:......
  • useHeadSafe:安全生成HTML头部元素
    title:useHeadSafe:安全生成HTML头部元素date:2024/7/17updated:2024/7/17author:cmdragonexcerpt:摘要:“useHeadSafe”是Vue.js组合函数,用于安全生成HTML头部元素,通过限制输入值格式避免XSS等安全风险,提供了安全值白名单确保只有安全属性被添加。categories:前端开......
  • Keysight 是德 DSAX92004A 高性能示波器
    Keysight是德DSAX92004A高性能示波器DSAX92004AInfiniium高性能示波器:20GHzzui高带宽实时示波器20GHz真正模拟带宽,可升级为最高带宽:32GHz80GSa/s采样率,2通道;40GSa/s采样率,4通道zui深的存储深度――高达2Gpts存储器(每个通道具有50Mpts的标准深度)zui......
  • Keysight 是德 DSAX92804A 高性能示波器
    Keysight是德DSAX92804A高性能示波器DSAX92804ADSAX92804AInfiniium高性能示波器:28GHz高带宽实时示波器28GHz真正模拟带宽,可升级为zui高带宽:32GHz80GSa/s采样率,2通道;40GSa/s采样率,4通道zui深的存储深度――高达2Gpts存储器(每通道50Mpts标准深度)zui......
  • Keysight 是德 DSAX92504A 高性能示波器
    Keysight是德DSAX92504A高性能示波器DSAX92504AInfiniium高性能示波器:25GHz高带宽实时示波器25GHz真正模拟带宽,可升级为zui高带宽:32GHz80GSa/s采样率,2通道;40GSa/s采样率,4通道zui深的存储深度――高达2Gpts存储器(每通道50Mpts标准深度)zui高的实时示波......
  • 解决Landsat 5 TM L2影像在ENVI中打不开的情况
    打开Landsat5TML2影像的MTL文件在ENVI中报错如下:解决方法:打开MTL文件更改两个地方:1.将第一行改为:GROUP=L1_METADATA_FILE;2.L2级的影像已经过校正处理,正确的应该是如下图所示*****_SR_B*.TIF,但是在MTL里面往下拉还有一处地方的各波段名称没有更改过来,将下图红色框内......