精华内容
下载资源
问答
  • ElGamal签名程序

    2014-04-13 17:39:53
    ElGamal签名代码 VC6.0上实现ElGamal签名程序 有实验截图
  • ElGamal签名 加密

    2013-01-06 17:51:54
    ElGamal签名 加密C语言实现
  • ElGamal签名算法实现 学校的课程设计作业。 要用的话自取。 不得不说,学校的老师太没有B树了。 验收根本不看你的代码,说你的报告贴那么多代码干嘛,不写汉字领导检查怎么看的懂。 简直无语,呵呵哒。
  • 基于ElGamal签名的隐私保护网上交易方案
  • 基于MATLAB的ElGamal签名实验教学平台设计
  • Elgamal签名算法(初始化和签名) Elgamal签名算法(验证) Elgamal签名算法(正确性) Elgamal签名算法(举例) #include <stdlib.h> #include <stdio.h> #include <time.h> #include <math.h>...

    Elgamal签名算法(初始化和签名)

    在这里插入图片描述

    Elgamal签名算法(验证)

    在这里插入图片描述

    Elgamal签名算法(正确性)

    在这里插入图片描述

    Elgamal签名算法(举例)

    在这里插入图片描述

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #include <math.h>
    int xy[22];
    int myPow(int a, int b, int m) {
            int res = 1;
            a %= m;
            while (b != 0) {
                if ((b & 1) == 1)
                    res = (res * a) % m;
                a = (a * a) % m;
                b >>= 1;
            }
            return res;
        }
    // 判断两个数是否互质
    int isHuZhi(int a, int b) {
        return b == 0 ? a : isHuZhi(b, a % b);
    }
    
    
    int calculate3(int y,int k,int p){
    	printf("...%d %d %d\n",y,k,p);
    	int l=1;
    	for(int i = 0;i<k;i++){
    		l=l*y;
    		l=l%p;
    	}
    	printf("l=%d\n",l);
    	return l;
    }
    // 求 a mod b 的逆元
    void exGcd(int a, int b) {
        if (b == 0) {
            xy[0] = 1;
            xy[1] = 0;
        } else {
            exGcd(b, a % b);
            int x = xy[0];
            xy[0] = xy[1];
            xy[1] = x - (a / b) * xy[1];
        }
    }
    main()
    {
    	int p,q,x,y,k,k1,m,r,a;
    	int k2,ni;
    	int s;
    	printf("请输入大素数 p ");
    	scanf("%d",&p);
    	printf("请输入消息 m  ");
    	scanf("%d",&m);
    	printf("请输入本源元 q ");
    	scanf("%d",&q); 
    	
    	srand(time(NULL)); //随机数种子
    	x=15;//rand()%p-1+2 ;
    	printf("x=%d\n",x);
    	y = myPow(q, x, p); // y是公开密钥
    	printf("公开密钥y=%d\n",y);
    	
    	
    	k =11;//rand()%p-1+1 ;
    	while (isHuZhi(k, p-1) != 1) {
            k =rand()%p-1+1 ;
        }
        printf("k=%d",k);
         // r = g^k mod p
        r = myPow(q, k, p);
        printf("r=%d\n",r);
        printf("若是加密请输入1,签名输入2");
        scanf("%d",&a);
        switch(a){
        	case 1:
    				s=calculate3(y,k,p);
    				if(s < 0) s =(s+(p-1))%(p-1);
    				s=s*m%p;
    				printf("发送密文(%d,%d)\n",r,s);
    				//解密
    				 k2=myPow(r, x, p);
    				 printf("k2=%d\n",k2);
    				 exGcd(r,p);
    				 ni=xy[0];
    				 if(ni<0)ni=ni+p;
    				 printf("ni=%d",ni);
    				 m=myPow(ni,x,p)*s;
    				
    				 printf("m=%d",m%p); 
    				break;
        	case 2: // 计算k^-1 mod p-1
    			    exGcd(k, (p-1));
    				k1 = xy[0];
    			    if(k1 < 0) k1 += (p-1);
    			    printf("k1=%d\n",k1);
    			    // s = k^(-1)*(m-rx)(mod p-1)
    			    s = (k1*(m-r*x))%(p-1); // (m,r,s)为对消息m的数字签名
    			    printf("s=%d\n",s);
    			    // s可能为负值,所以要将其转化为正数,利用a%b=(a%b+b)%b
    			    if(s < 0) s =(s%(p-1)+(p-1))%(p-1);
    			   
    				printf("签名为(%d,%d)",r,s);
    				
    			    if ((myPow(y, r, p) * myPow(r, s, p))%p == myPow(q, m, p)) {
    			        printf("接受签名"); 
    			    } else {
    			        printf("拒绝签名"); 
    			    }
    				
    			
    			    // 计算k^-1 mod p-1
    			    exGcd(k, (p-1));
    				k1 = xy[0];
    			    if(k1 < 0) k1 += (p-1);
    			    printf("k1=%d\n",k1);
    			    // s = k^(-1)*(m-rx)(mod p-1)
    			    s = (k1*(m-r*x))%(p-1); // (m,r,s)为对消息m的数字签名
    			    printf("s=%d\n",s);
    			    // s可能为负值,所以要将其转化为正数,利用a%b=(a%b+b)%b
    			    if(s < 0) s =(s%(p-1)+(p-1))%(p-1);
    			   
    				printf("签名为(%d,%d,%d)",r,s,p);
    				
    			    if ((myPow(y, r, p) * myPow(r, s, p))%p == myPow(q, m, p)) {
    			        printf("接受签名"); 
    			    } else {
    			        printf("拒绝签名"); 
    			    }
    			    break;
    			}
    	
    }
    
    展开全文
  • 基于MATLAB的ElGamal签名实验教学平台设计.pdf
  • 【实验名称】数字签名ElGamal签名方案 【实验目的】 1、了解数字签名的过程,包括签名过程和认证过程; 2、掌握ElGamal签名方案。 【实验原理】 ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥...

    赞赏码 & 联系方式 & 个人闲话

    【实验名称】数字签名ElGamal签名方案

     

    【实验目的】

    1、了解数字签名的过程,包括签名过程和认证过程;

    2、掌握ElGamal签名方案。

     

    【实验原理】

    ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系,其安全性是基于有限域上离散对数学问题的难解性。它至今仍是一个安全性良好的公钥密码算法。它既可用于加密又可用于数字签名的公钥密码体制。

    数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。

     

    【实验内容】

    实验内容: 生成各自的密钥,并公布给相邻同学自己的公钥(p,g,y),A和B之间约定签署的消息m(如学号),A签署消息m,将三元组(m,r,s)发给B,B验证签名。

    代码:(代码解释见代码中注释)

    #include<iostream>
    #include<time.h>
    using namespace std;
    #define  LL long long
    
    //幂次运算,含模运算,防止溢出
    LL My_Pow(LL a, LL m, LL input)
    {
    	LL result = 1;
    	for (LL i = 0; i < m; i++)
    	{
    		result = (result*a) % input;
    	}
    	return result;
    }
    
    //用辗转相除法求最大公约数
    LL gcd(LL a, LL b)
    {
    	LL temp = b;
    	while (a%b != 0)
    	{
    		temp = a % b;
    		a = b;
    		b = temp;
    	}
    	return temp;
    }
    
    //扩展欧几里得法,递归法
    LL extend(LL a, LL b, LL&x, LL&y)
    {
    	if (b == 0)
    	{
    		x = 1;
    		y = 0;
    		return a;
    	}
    	LL r = extend(b, a % b, x, y);
    	LL t = x;
    	x = y;
    	y = t - a / b * y;
    	return r;
    }
    
    //借助递归扩展欧几里得求逆
    LL inv(LL a, LL b)
    {
    	LL x, y;
    	LL r = extend(a, b, x, y);
    	if (r != 1)
    	{
    		return 0;
    	}
    	x = x % b;
    	if (x < 0)
    	{
    		x = x + b;
    	}
    	return x;
    }
    
    
    int main()
    {
    	//密钥产生
    	cout << "***   密钥产生环节   ***" << endl;
    	LL p, g;
    	cout << "请输入大素数p和本原根g:";
    	cin >> p >> g;
    	srand((unsigned)time(NULL));
    	LL x = 0;
    	while (x <= 0)
    	{
    		x = rand() % (p - 1);
    	}
    	cout << "秘密整数x随机选择完毕" << endl;
    	LL y = My_Pow(g, x, p);
    	cout << "公钥计算完毕" << endl;
    	cout << "公钥为:(" << p << "," << g << "," << y << ")" << endl;
    
    	//数字签名
    	LL m;
    	cout << "\n***   数字签名环节   ***" << endl;
    	cout << "请输入签名消息m:";
    	cin >> m;
    	LL k = 0;
    	while (gcd(k, p - 1) != 1 || k <= 0)
    	{
    		k = rand() % (p - 1);
    	}
    	cout << "安全随机数k选择完毕" << endl;
    	LL r = My_Pow(g, k, p);
    	//cout << k<<" "<<inv(k, p-1) << (m - x * r)<<endl;
    	LL s = inv(k, p - 1)*(m - x * r) % (p - 1);
    	//cout << s << endl;
    	if (s < 0)
    	{
    		s = s + p - 1;
    	}
    	cout << "签署消息生成完毕" << endl;
    	cout << "签署消息为:(" << m << "," << r << "," << s << ")" << endl;
    
    	cout << "\nA将签名传送给B" << endl;
    
    	//签名验证
    	cout << "\n***   签名验证环节   ***" << endl;
    	cout << "请输入收到的签署消息:";
    	cin >> m >> r >> s;
    	LL temp1, temp2;
    	temp1 = My_Pow(y, r, p);
    	temp2 = My_Pow(r, s, p);
    	LL v1 = (temp1 * temp2) % p;
    	LL v2 = My_Pow(g, m, p);
    	cout << "开始验证..." << endl;
    	cout << "结果:v1 = " << v1 << "  v2 = " << v2 << endl;
    	if (v1 == v2)
    	{
    		cout << "经验证,该签名有效\n" << endl;
    	}
    	else
    	{
    		cout << "请注意签名已失效!\n" << endl;
    	}
    
    	return 0;
    }
    

    运行演示:

     

    【小结或讨论】

    这次实验总体难度不是很大,我觉得重要的是理解ElGamal加密算法和数字签名算法。密码学的很多加密算法都对离散数学有着很高的要求,但是这一部分又是十分抽象晦涩的,即使我们学过离散数学和信息安全数学基础,对密码学里的很多算法理解上也是会遇到不小的困难的,所以这就需要反复琢磨,仔细思考,而且还需要时常温习。

    这次算法其实比之前的加密算法要容易懂一些,我觉得ElGamal设计的十分巧妙,利用了有限域上离散对数的困难性,通过模数的逆在双方都不知道具体密钥数值的情况下,却能实现秘密信息的准确传达,而且利用的还是随机密钥,这就意味着即使相同的明文加密后的密文每次也是不一样的,这又进一步加强了算法的安全性。

    展开全文
  • 数字签名在信息安全中具有重要的作用,针对一种ELGamal签名体制的变形,分析了它的安全性;证明了对它的攻击等价于解有限域上的离散对数问题,并对变形后体制的计算效率与原方案做了分析比较和说明。
  • 针对网上交易时的用户个人隐私安全问题,依据不经意传输理论,基于ElGamal签名的不经意签名电子信封(OSBE)模型,提出了一个可保护用户隐私的网上交易数字商品方案。首先用户匿名付费给银行,然后银行将用户订购...
  • 数字签名是公钥密码学发展过程中最重要的概念之一,产生和使用数字签名过程的一般模型如图所示 消息认证可以保护消息交换双方不受第三方的攻击,但是不能...必须能验证签名者、签名日期和时间 必须能认证被签的消息

    数字签名是公钥密码学发展过程中最重要的概念之一,产生和使用数字签名过程的一般模型如图所示

    消息认证可以保护消息交换双方不受第三方的攻击,但是不能处理通信双方自身发生的攻击。例如对下图中的某种方式进行攻击,考虑两种情况:

    • Bob可以伪造一条消息并称该消息来自Alice。用他们的共享密钥产生认证码,并将认证码附加在消息后面。
    • Alice可以否认曾经发送过某天消息。Bob可以伪造消息,所以无法证明Alice确实发过该消息。

    数字签名的特征:

    • 必须能验证签名者、签名日期和时间
    • 必须能认证被签的消息内容
    • 签名应该由第三方仲裁,以解决争执

    下面给出一些攻击类型,危害程度从高到低:

    • 唯密文攻击
    • 已知消息攻击
    • 一般选择消息攻击
    • 定向选择消息攻击
    • 适应性选项消息攻击
    • 完全破译
    • 通用伪造
    • 选择伪造
    • 存在性伪造

     数字签名应该满足的条件:

    • 签名必须是与消息相关的二进制位串
    • 签名必须使用发送方某些独有的信息,以防止伪造和否认
    • 产生数字签名比较容易
    • 识别和验证签名比较容易
    • 伪造数字签名在计算上是不可行的。无论是从给定的数字签名伪造消息,还是从给定的消息伪造数字签名,在计算上是不可行的
    • 保存数字签名的副本是可行的

    安全Hash函数可用于满足上述条件的数字签名设计,简单的设计方案如图所示

     直接数字签名是指:只涉及通信双方的数字签名。这里先进行签名,然后才执行外层的加密,发生争执的时候第三方可以查看消息及签名。如果对消息先加密,然后对消息的密文签名,那么第三方必须知道解密密钥才能读取原始消息。签名如果在内层进行,接收方可以存储明文的消息及签名,以备解决争执。

    直接签名有个弱点,它依赖于发送方的私钥安全性。发送方可以抵赖私钥丢失或者被盗。被广泛接受的解决方案是使用数字证书的证书管理中心(CA)。

    ElGamal数字签名方案

    ElGamal签名方案使用私钥进行加密,使用公钥进行解密。

    签名包括两部分,一部分是对公共参数\alpha的加密,一部分是对私钥和前一部分签名的加密。验证签名的方式为

    m是明文的Hash值,然后对A的公钥和前一部分签名分别用签名求指数,得到的结果进行比较即可。

    Schnorr数字签名方案

    同ELGama数字签名一样,Schnorr数字签名也是基于离散对数,将生成签名所需的消息计算量最小化,生成签名的主要工作不依赖于消息,可以在处理器空闲时执行。生成签名过程与消息相关的部分需要进行2n位长度的整数与n位长度的整数相乘。

    在签名之前可以生成x,这个x是关于随机数r的值,与M无关,最后签名只是与M的绑定,不依赖于M

    验证过程为

    数字签名标准(DSS)

    DSS使用的是只提供数字签名功能的算法,与RSA不同,DSS虽然是一种公钥密码方案,但是不能用于加密或密钥交换。

    数字签名算法(DSA)如图所示

    DSA中的签名和验证函数如图所示

    椭圆曲线数字签名算法(ECDSA)

    ECDSA处理过程:

    • 参与数字签名的所有通信方都使用相同的全局参数,用于定义椭圆曲线以及曲线上的基点
    • 签名者首先生成一对公私钥。对于私钥,选择一个随机数或者伪随机数作为私钥,利用随机数和基点算出另一点,作为公钥
    • 对消息计算Hash值,用私钥、全局参数和Hash值生成签名
    • 验证者用签名者的公钥、全局参数等验证

    全局参数:

    密钥生成:

    每个签名者都要生成一对公私钥,假设是Bob

    这里是定义在Z_q上的椭圆曲线,椭圆曲线上的乘法运算就是多个点的累加运算,最后的结果还是椭圆曲线上的点

    有了公钥之后,Bob对消息m生成320字节的数字签名:

    第2步确保最后算出的公钥(椭圆曲线上的点)是落在曲线上。第5不,如果为O点也是不符合的,所以也要重新生成。

    Alice在获得Bob的公钥和全局参数后,即可校验签名

    RSA-PSS数字签名

    掩码生成函数(MGF)是一个伪随机函数,输入参数是一个任意长度的位串X以及需要输出字节长度L。

    在签名之前,先对消息进行编码(EM),如图

    拥有私钥\left ( d,n \right )和公钥\left ( e,n \right )的签名者生成签名

    将字节串EM作为无符号的非负二进制整数m,加密得到签名s:s=m^d \mod{n}

    在做签名的时候不再用公钥加密m,而是用私钥加密得到签名。验证的时候用公钥验证:

    展开全文
  • 提出一种全IP宽带移动P2P网络结构,通过在数据网关上增加分布式用户服务器实现异构网络的互联,形成了虚拟的二维覆盖网络,采用IMS为核心控制网络,基于此结构可开展各种移动P2P业务。以资源共享流程为例,对比分析...
  • 注意:只是我的理解,可能有不正确的地方算法ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换算法,由Taher Elgamal在1985年提出。安全ElGamal加密算法能够应用在任意一个循环群(cyclic group)上...

    注意:只是我的理解,可能有不正确的地方算法

    ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换算法,由Taher Elgamal在1985年提出。安全

    ElGamal加密算法能够应用在任意一个循环群(cyclic group)上。在群中有的运算求解很困难,这些运算一般与求解离散对数(Discrete logarithm)相关,求解的困难程度决定了算法的安全性。加密

    群(Group)的定义:spa

    群是数学中的概念。.net

    一些元素组成的集合,若是元素知足如下条件,则把这些元素组成的集合叫作群:blog

    在元素上能够定义一个2元运算,运算知足封闭性、结合律、单位元和逆元。ip

    群的例子:get

    全部整数构成一个群,若是定义的2元运算为整数加法的话。加法能够知足上述条件:数学

    封闭性:a+b以后仍然是整数it

    结合率:(a + b) + c = a +(b + c)

    单位元:0 + a = a + 0 = a,则整数0为加法的单位元

    逆元:a + b = b + a = 0,则整数b叫作整数a的逆元

    因此能够简单的将群理解为一些元素的集合加上一个选定的运算方式。

    循环群的定义:

    循环群中的全部其它元素都是由某个元素g运用不一样次数的选定运算方式计算出来的。

    公钥生成:

    一、选取一个循环群G,且循环群G的阶数为q

    二、选择一个随机数x,1

    三、计算h=g^x

    h和g,G,q就构成公钥

    x是保密的,x与h,g,G,q一块儿构成密钥

    公钥加密:

    一、选取一个随机数y,1

    二、计算c1=g^y

    三、计算s=h^y=(g^x)^y=g^(x*y)

    四、加密数m得c2=m*s

    c一、c2构成加密结果,交给私钥解密

    私钥解密:

    一、经过c1计算获得s=c1^x=(g^y)^x=g^(x*y)

    二、计算c2*(s^-1)=(m*s)*(s^-1),获得原来数m

    注意以上的运算再也不是普通的乘(*)和乘方(^)运算,并且有循环群G对应的运算衍生出来的运算。但这些运算的意义和规律仍是和普通数字运算的规律同样的,因此上面的等式仍然成立。

    由上面看出s的计算过程和Diffie-Hellman密钥交换算法相似。

    在应用中一般使用的循环群G为整数模n乘法群(Multiplicative group of integers modulo n)。

    同余:

    若是整数a、b的对于整数n的模相等即a%n=b%n,则称a和关于模n同余。能够记作:

    a≡b (mod n)

    互质(Coprime integers):

    若是整数a、b的最大公因数为1,则a、b互质。

    整数模n乘法群:由模n的互质同余类组成一个乘法群。

    签名和验证算法,基于整数模n乘法群:

    私钥,公钥生成:

    一、选取一个随机数k,1

    二、计算y=g^x%p

    (g, p, y)为公钥,x为私钥。

    用私钥签名:

    一、选取一个随机数k,1

    二、计算r,r知足:r≡g^k (mod p)

    三、计算s,s知足:s≡(H(m)-xr)*(k^(-1))  (mod p-1)

    m为待签名信息,H(m)为m的哈希(好比sha1)结果。

    (r,s)构成对m的签名

    用公钥验证签名:

    一、验证:0

    二、验证:g^(H(m))≡(y^r)*(r^s) (mod p)

    签名算法正确性证实:

    由签名过程得:H(m) ≡s*k+x*r (mod p-1)

    根据费马小定理:

    g^(H(m))≡g^(x*r)*g^(k*s) (mod p)≡((g^x)^r)*(g^k)^s (mod p) ≡ (y^r)*(r^s) (mod p)

    费马小定理:

    若是p为质数,则任意整数a:

    a^(p-1) ≡1  (mod p)

    即存在整数k使 a^(p-1) = k*p +1

    再广义化一些:

    若是p为质数,且整数m、n知足:m ≡n  (mod p-1),那么对任意整数a:

    a^m ≡ a^n  (mod p)

    若是m=p-1,n=0,那么上市转换为通常形式:a^(p-1)≡1  (mod p)

    参考:

    展开全文
  • 数字签名的必要性 消息认证能够使通信双方对接收到的信息来源及完整性进行验证,防止第三方的攻击,然而却不能防止通信双方中的一方对另一方的欺诈。 这种欺诈有多种形式,例如通信双方(发送方A、接收方B)利用双方...
  • ECDSA在区块链中的应用 比特币交易流程 ELGamal签名算法
  • 解密时计算 M = b / a^x ( mod p ) ElGamal签名的安全性依赖于乘法群(IFp)* 上的离散对数计算。素数p必须足够大,且p-1至少包含一个大素数。因子以抵抗Pohlig & Hellman算法的攻击。M一般都应采用信息的HASH值(如SHA...
  • 描述 这个 repo 将保存我为大学模块 CA547 密码术和安全协议所做的工作。
  • * 是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。 21 * 简单的说,这是一种更高级的验证方式,用作数字签名。 22 * 不单单只有公钥、私钥,还有数字签名。...
  • Elgamal数字签名

    2015-10-07 14:13:42
    Elgamal数字签名的JAVA代码,比较简单,希望有用
  • ElGamal数字签名

    2021-04-19 16:54:42
    ElGamal数字签名
  • 主要为大家详细介绍了eclipse实现ElGamal数字签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Elgamal数字签名主要利用离散对数的特性来实现签名,具体方式如下: 生成 随机选择 签名算法 验证算法
  • elgamal数字签名

    千次阅读 2018-11-25 09:34:00
    elgamal公钥密码算法可用来实现加密以及数字签名。其中数字签名算法原理如下: 1. 秘钥产生:Alice选择大素数p,本原根g,选择一个秘密整数1&lt;&lt;x&lt;&lt;p-2,计算y=g^xmod p,公钥为(p,g,y),...
  • Elgamal数字签名原理

    万次阅读 2017-12-01 17:37:36
    Elgamal数字签名  Elgamal数字签名主要也是利用离散对数的特性来实现签名,具体方式如下: 1. 选择一个大素数P、一个本原元G、一个随机整数d,d属于[2,p-2]; 2. 生成β,β=G^d mod P; 3. 此时P、G、β就是公钥...
  • ElGamal数字签名

    2021-06-28 13:48:25
    ElGamal就是一种原理简单,应用广泛的数字签名方法,它的成功很大程度上取决于求解离散对数问题的困难。ElGamal的密钥和参数的产生过程如下: 它先选定一个足够大的素数P, 然后在比P小的正数中选取一个随机数g和...
  • ElGamal公钥密码算法及ElGamal数字签名方案实现

    万次阅读 多人点赞 2018-03-30 15:41:58
    它既可用于加密又可用于数字签名的公钥密码体制。 一、ElGamal公钥密码算法描述 1.选取一个大素数p,使离散对数问题在有限域GF(p)上是难解的,选取g∈Z是一个本原元。 2.随机选取整数x,1≤x≤p-2,计算y=g^x...
  • ElGamal数字签名优缺点

    2021-04-16 18:53:38
    密码学 ElGamal数字签名优缺点 Schnorr数字签名算法优缺点
  • ElGamal数字签名笔记

    2021-10-06 19:36:42
    ElGamal的数字签名核心思想在于这样的表达式: 1)am−S1XA×aS1XA≡am(modp),S11) a^{m-S_1X_{A}} \times a^{S_1X_{A}}\equiv a^{m} \pmod{p},S_11)am−S1​XA​×aS1​XA​≡am(modp),S1​是常数; 2)2)2) 对于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,825
精华内容 1,130
关键字:

elgamal签名