加入收藏
设为首页
关于我们
您现在的位置: 101美术高考网 >> 论文中心 >> 工学 >> 通信学 >> 文章正文
  安全增强的基于RSA可验证门限签名方案         ★★★★
安全增强的基于RSA可验证门限签名方案
作者:101ms.com 文章来源:中国论文下载中心 点击数: 更新时间:2008-5-4 9:29:52

sp;  这里给出了门限签名方案的实现算法,其中需要运用java.io.*; java.security.*; java.math.*; javax.crypto.*; javax. crypto.spec.*;java.security.spec.*;java.security. interfaces.*; java.util.*; javax.crypto.interfaces.*等系统提供的类和方法
    (1) RSA签名私钥生成算法:
      public class RSA {
  KeyPairGenerator kpg=KeyPairGenerator.getInstance ("RSA");
     kpg.initialize(1024);
     KeyPair kp=kpg.genKeyPair();
     PublicKey pbkey=kp.getPublic();
     PrivateKey prkey=kp.getPrivate();
     //保存RSA公钥
       FileOutputStream f1=new FileOutputStream("skey_ RSA_pub.dat");
       ObjectOutputStream b1=new ObjectOutputStream (f1);
       b1.writeObject(pbkey);
    //保存RSA私钥
       FileOutputStream f2=new FileOutputStream("skey_ RSA_priv.dat");
       ObjectOutputStream b2=new ObjectOutputStream (f2);
       b2.writeObject(prkey);
}
(2)子密钥生成算法:
public class shareRSA {//读取私钥d及RSA参数
         FileInputStream f=new FileInputStream ("skey_ RSA_priv.dat");
                ObjectInputStream b=new ObjectInput Stream(f);
                RSAPrivateKey prk=(RSAPrivateKey) b.readObject();
                BigInteger d=prk.getPrivateExponent();
                BigInteger n=prk.getModulus();
                byte[] x=new byte[16];
                Random d1=new Random();
                d1.nextBytes(x);
                BigInteger c=new BigInteger(x);
                BigInteger m=c.mod(n);
                BigInteger d2=d.subtract(m);
                //保存秘密密钥d1
                FileOutputStream f1=new FileOutput Stream("partkey1_RSA.dat");
               ObjectOutputStream b1=new ObjectOutput Stream(f1);
               b1.writeObject(d1);
                //保存秘密密钥d2
                FileOutputStream f2=new FileOutput Stream ("partkey2_RSA.dat");
               ObjectOutputStream b2=new ObjectOutput Stream(f2);
               b2.writeObject(d2);
                }
    然后根据实际选择的tn值进行多项式的选择,以d2作为多项式的a0,计算n个子密钥分发给共享服务器。
    (3)各共享服务器用子密钥进行数字签名算法:
public class signature {//获取要签名的数据存放在data数组
     FileInputStream f=new FileInputStream("msg.dat");
      int num=f.available();
      byte[] data=new byte[num];
      f.read(data);
      //获取私钥
     FileInputStream f1=new FileInputStream("partkey2i_ RSA_priv.dat");
         ObjectInputSt

上一页  [1] [2] [3] [4] 下一页


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |
    Copyright © 2006 All Rights Reserved 中国美术高考网(国内最专业的美术高考门户网) 版权所有 未经允许 不得转载!
    网站咨询/管理员:101msw#163.com, 网站编辑/作品投稿/简章发布:101msw#163.com
    为防止垃圾邮件,请将"#"改为"@",编辑QQ:362058177 联系电话:13705952125