快速业务通道

JAVA上加密算法的实现用例笔记 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
n("signed(签名内容)="+byte2hex(signed));   //把信息和数字签 名保存在一个文件中    java.io.ObjectOutputStream out=new java.io.ObjectOutputStream(new java.io.FileOutputStream("myinfo.dat"));    out.writeObject(myinfo);    out.writeObject(signed);    out.close();    System.out.println("签名并生成文件成功 ");    }    catch (java.lang.Exception e) {    e.printStackTrace();    System.out.println("签名并生成文件失败");    };    //第三步    //其他人通过公 共方式得到此户的公钥和文件    //其他人用此户的公钥,对文件进行检查,如果成功说明是此用户 发布的信息.    //    try {    java.io.ObjectInputStream in=new java.io.ObjectInputStream(new java.io.FileInputStream("mypubkey.dat"));    PublicKey pubkey=(PublicKey)in.readObject();    in.close();    System.out.println (pubkey.getFormat());    in=new java.io.ObjectInputStream(new java.io.FileInputStream ("myinfo.dat"));    String info=(String)in.readObject();    byte[] signed=(byte [])in.readObject();    in.close();    java.security.Signature signetcheck=java.security.Signature.getInstance("DSA");    signetcheck.initVerify (pubkey);    signetcheck.update(info.getBytes());    if (signetcheck.verify (signed)) {    System.out.println("info="+info);    System.out.println("签名正 常");    }    else  System.out.println("非签名正常");    }    catch (java.lang.Exception e) {e.printStackTrace();};    }    //生成一对文件myprikey.dat 和mypubkey.dat---私钥和公钥,    //公钥要用户发送(文件,网络等方法)给其它用户,私钥保存在 本地    public boolean generatekey()    {    try {    java.security.KeyPairGenerator  keygen=java.security.KeyPairGenerator.getInstance ("DSA");   // SecureRandom secrand=new SecureRandom();   // secrand.setSeed ("tttt".getBytes()); //初始化随机产生器   // keygen.initialize(576,secrand);     // 初始化密钥生成器    keygen.initialize(512);    KeyPair keys=keygen.genKeyPair ();   //  KeyPair keys=keygen.generateKeyPair(); //生成密钥组    PublicKey pubkey=keys.getPublic();    PrivateKey prikey=keys.getPrivate();    java.io.ObjectOutputStream out=new java.io.ObjectOutputStream(new java.io.FileOutputStream ("myprikey.dat"));    out.writeObject(prikey);    out.close();    System.out.println("写入对象 prikeys ok");    out=new java.io.ObjectOutputStream(new java.io.FileOutputStream("mypubkey.dat"));    out.writeObject(pubkey);    out.close();    System.out.println("写入对象 pubkeys ok");    System.out.println(" 生成密钥对成功");    return true;    }    catch (java.lang.Exception e) {    e.printStackTrace();    System.out.println("生成密钥对失败");    return false;    };    }    public String byte2hex(byte[] b)    {    String hs="";    String stmp="";    for (int n=0;n<b.length

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号