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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于JAVA上加密算法的实现用例笔记 - 编程入门网的所有评论