站长杂谈

基于服务器安全ELGamal公钥密码实现

时间:2017-06-12 17:25 点击:

  基于服务器安全ELGamal公钥密码实现

  对于新世界主机香港服务器的安全,是需要各种加密技术,对于公钥密码体制当中,以前小编为大家讲述了RSA公钥密码算法(建立在大整数因子分解的困难性之上)。而这个ELGamal公钥密码算法与RSA有所不同,所以小编带大家学习这个ELGamal公钥密码算法。

  ElGamal密码体制是T. ElGamal于1985年提出,是最有名的公钥密码体制之一,它的安全性是基于离散对数问题。

  ElGamal密码体制的具体描述如下。

  1)密钥的生成

  系统选取一个大素数p, 是p的一个本原元(又称素根)。随机生成一个整数x,2≤ⅹ≤p-2并计算: 。

  以(p,a,y )作为用户的公开密钥,而 作为用户的秘密密钥。

  2)加密

  设用户想加密的明文为 ,其加密过程如下:

  (1)随机选择一个整数 k,

基于服务器安全ELGamal公钥密码实现

  ,并计算

基于服务器安全ELGamal公钥密码实现

基于服务器安全ELGamal公钥密码实现

  (2)密文分组二元组(c1,c2 )。

  3)解密

  用户用秘密密钥 对密文(c1,c2 )的解密过程如下:

基于服务器安全ELGamal公钥密码实现

  很容易验证解密过程的有效性,因为

基于服务器安全ELGamal公钥密码实现

  而用户公钥

基于服务器安全ELGamal公钥密码实现

  ,所以,

基于服务器安全ELGamal公钥密码实现

  在ElGamal密码体制中,加密运算结果具有随机性,因为密文既依赖于明文,又依赖于加密过程中选择的随机数。所以,对于同一个明文,会有许多可能的密文,即ElGamal密码算法是非确定性算法。

  下面的例子说明在ElGamal密码体制中所进行的计算。

  设p=2579,a=2 。可以验证a 是模 p的本原元。用户B选择x=765 作为自己的私钥,所以其对应公钥

基于服务器安全ELGamal公钥密码实现

  现设用户A想要传送消息m=1299 给用户B。假设A选择的随机数k=853 ,那么A计算

基于服务器安全ELGamal公钥密码实现

  和

基于服务器安全ELGamal公钥密码实现

  ×

基于服务器安全ELGamal公钥密码实现

  下面介绍ElGamal密码算法程序实现:

  算法实现伪代码如下:

  {

  int g,x1,y,c1,c2,m,x,z,t;int i,j,b[p];

  printf("请先选择一组公钥与私钥(输入私钥):");

  scanf("%d",&x1);

  printf("101的本原元素为:\n");

  for(i=1;i

  {

  memset(b,0,p-1);

  for(j=0;j

  {

  b[test3(i,j)]=1;

  }

  for(j=p;j>=1;j--)

  {

  if(b[j]==0)

  break;

  }

  if(j==0) printf("%d ",i);

  else continue;

  }

  printf("\n请输入GF(p)上的本原元素g:");

  scanf("%d",&g);

  printf("请输入随机数x:");

  scanf("%d",&x);

  printf("请输入明文m:");

  scanf("%d",&m);

  y=int (test3(g,x1));

  c1=int (test3(g,x));

  z=int(test3(m,1));

  t=int(test3(y,x));

  c2=int ((z*t)%p);

  printf("传输的密文为:(%d,%d)",c1,c2);

  }

  基于服务器安全ELGamal公钥密码实现已经给大家讲清楚了。如果您还有什么不明确或不懂的地方,欢迎咨询新世界主机了解,详细请咨询Skpey咨询:vpssj.net@hotmail.com, ;我们将竭诚为您服务。