菜单
  

     
    图2 写入签名
    (3)在数据接收端对数据进行校验数据签名
    通过FileInputStream文件流和ObjectInputStream对象分别读入文件、密钥、签名。通过Signature类使用getInstance工厂方法构造DSA算法Signature对象,通过initVerify()方法使用公钥初始化Signature对象。然后使用update()方法签名的文件进行解密操作,最后使用verify()方法验证解密后的代码和消息摘要是否一致。
     
    图3 签名验证
    4.3 数字签名系统的流程图
    根据系统的操作流程,大致可以把系统分为如下结构:
     
    图4 数字签名系统流程图
    5.数字签名系统的实现
    设计了公私密钥对生成模块,数据签名模块,数据校验模块,针对三个模块中用到的技术,做一下详细的阐述。
    5.1 公私密钥对生成模块
    生成密钥对可用java提供的类KeyPairGenerator,用其中的getInstance方法创建KeypairGenerator对象,在用initialize进行初始化,最后用generateKeyPair生成密钥对,密钥对生成后,就可以将其写入文件中。通过网络或其他方式公告用户,用户接收到数据文件和签名文件后,就可以使用公约来校验数据文件的数字签名。
    直接使用import java.security.KeyPairGenerator导入包用于生成公私密钥对。
    FileOutputStream fos_public=new
    FileOutputStream(“public.key”);
    ObjectOutputStream oos_public=new
    ObjectOutputStream(fos_public);
    FileOutputStream fos_private=new
    FileoutputStream(“private.key”);
    ObjectOutputStream oos_private=new
    ObjectOutputStream(fos_private);
    KeyPairGenerator
    在公私密钥生成模块中使用KeyPairGenerator获取DSA算法:
    keyGen=KeyPairGenerator.getInstance(“DSA”);
    对DSA的实例进行初始化:
    keyGen.initialize(1024);
    使用非对称密钥加密DSA的实例获取公钥和私钥对:
    KeyPair key=keyGen.generateKeyPair();
    从生成的公私钥对中获取公钥:
    PublicKey publicKey=key.getPublic();
    从生成的公私钥对中获取私钥:
    PrivateKey privateKey=key.getPrivate();
    进行相应的关闭:
    oos_public.writeObject(publicKey);
    oos_private.writeObjecr(privatekey);
    fos_public.close();
    oos_public.close();
    fos_private.close();
    oos_private.close();
    提示生成密钥对:
    System.out.println(“密钥对生成!”);
    5.2 数据签名模块
    导入包import java.io.File用于创建文件对象file_info,引入文档info.txt将要加密内容写入文档。
    读入info.txt将文件对象file_info放入文件流fis_info中,根据创建的文件对象file_info统计出文件中的字符数创建byte数组,读入byte数组到内存中。
    File file_info=new File(“info_txt”);
    FileInputStream fis_info=new
    FileInputStream(file_info);
    Int fileInfoLength=(int)file_info.length();
    byte[] infoBytes=new byte[fileInfoLength];
    fis_info.read(infoBytes);
    fis_info.close();
    读入私钥,创建文件对象fis_private,同时将文件对象fis_private放入对象流ois_private中,根据对象流读入私钥放入新创建的对象privateKey中。
    FileInputStream fis_private=new
    FileInputStream(“private.key”);
    ObjectInputStream ois_private=new
    ObjectInputStream(fis_private);
    PrivateKey orivateKey=(PrivateKey)
    ois_private.readObject();
    fis_private.close();
    ois_private.close();
    生成签名,导入类Signature用于提供数字签名算法DSA:
  1. 上一篇:基于遗传算法的云计算任务调度研究
  2. 下一篇:基于.NET的师生在线交流平台的设计和实现
  1. 基于MATLAB的图像增强算法设计

  2. jsp+sqlserver高校二手商品交...

  3. 基于Kinect的手势跟踪与识别算法设计

  4. JAVA基于安卓平台的医疗护工管理系统设计

  5. java+mysql设备监控记录的大...

  6. 基于核独立元分析的非线...

  7. 基于Hadoop的制造过程大数据存储平台构建

  8. 十二层带中心支撑钢结构...

  9. 中考体育项目与体育教学合理结合的研究

  10. 酸性水汽提装置总汽提塔设计+CAD图纸

  11. 当代大学生慈善意识研究+文献综述

  12. 杂拟谷盗体内共生菌沃尔...

  13. java+mysql车辆管理系统的设计+源代码

  14. 乳业同业并购式全产业链...

  15. 电站锅炉暖风器设计任务书

  16. 河岸冲刷和泥沙淤积的监测国内外研究现状

  17. 大众媒体对公共政策制定的影响

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回