快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
st();

发送给其他人你的信息和摘要

其他人用相同的方法初始化,添加信息,最后进行比较摘要是否相同

algb.isEqual(digesta,algb.digest())

相关AIP

java.security.MessageDigest 类

static getInstance(String algorithm)

返回一个MessageDigest对象,它实现指定的算法

参数:算法名,如 SHA-1 或MD5

void update (byte input)

void update (byte[] input)

void update(byte[] input, int offset, int len)

添加要进行计算摘要的信息

byte[] digest()

完成计算,返回计算得到的摘要(对于MD5是16位,SHA是20位)

void reset()

复位

static boolean isEqual(byte[] digesta, byte[] digestb)

JAVA上加密算法的实现用例笔记(3)

时间:2011-10-16

比效两个摘要是否相同

代码:

  import java.security.*;   public class myDigest {    public static void main(String[] args)  {    myDigest my=new myDigest();    my.testDigest ();    }    public void testDigest()    {    try {    String myinfo="我的测试信息";    //java.security.MessageDigest alg=java.security.MessageDigest.getInstance("MD5");    java.security.MessageDigest alga=java.security.MessageDigest.getInstance("SHA-1");    alga.update(myinfo.getBytes ());    byte[] digesta=alga.digest();    System.out.println("本信息摘要 是:"+byte2hex(digesta));    //通过某中方式传给其他人你的信息(myinfo)和摘要(digesta) 对 方可以判断是否更改或传输正常    java.security.MessageDigest algb=java.security.MessageDigest.getInstance("SHA-1");    algb.update(myinfo.getBytes ());    if (algb.isEqual(digesta,algb.digest())) {    System.out.println("信息检查 正常");    }    else    {    System.out.println("摘要不相同");    }    }    catch (java.security.NoSuchAlgorithmException ex) {    System.out.println("非法摘要算法");    }    }    public String byte2hex(byte [] b) //二行制转字符串    {    String hs="";    String stmp="";    for (int n=0;n<b.length;n++)    {    stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));    if (stmp.length()==1) hs=hs+"0"+stmp;    else hs=hs+stmp;    if (n<b.length-1)  hs=hs+":";    }    return hs.toUpperCase();    }   }

JAVA上加密算法的实现用例笔记(4)

时间:2011-10-16

2.3. 数字签名DSA

对于一个用户来讲首先要生成他的密钥对,并且分别保存 

生成一个KeyPairGenerator实例

java.security.KeyPairGenerator  keygen=java.security.KeyPairGenerator.getInstance ("DSA");

如果设定随机产生器就用如相代码初始化 

SecureRandom secrand=new SecureRandom();

secrand.setSeed("tttt".getBytes()); //初始化随机产生器

keygen.initialize(512,secrand);     //初始化密钥生成器 

否则

keygen.initialize(512);

生成密钥公钥pubkey和私钥prikey 

KeyPair keys=keygen.generateKeyPair(); //生成密钥组

PublicKey pubkey=keys.getPublic();

PrivateKey prikey=keys.getPrivate(); 

分别保存在myprikey.dat和mypubkey.dat中,以便下次不在生成

(生成密钥对的时间比较长 

java.io.ObjectOutputStream out=new java.io.ObjectOutputStream(new java.io.FileOutputStrea

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号