易截截图软件、单文件、免安装、纯绿色、仅160KB

java加密和数字签名4 数字签名

最近初步接触了下Java加密和数字签名的相关内容,我学习的过程大概分五步:
1)消息摘要
2)私钥加密
3)公钥加密
4)数字签名
5)数字证书
下面的代码是第四部分:数字签名
希望能为刚刚接触这个的朋友们省点事 package security;
import java.security.Signature;
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SignatureException;
/**
* 此例子是数字签名的例子,使用RSA私钥对消息摘要(这里指的是原始数据)进行签名,然后使用公钥验证签名
*
* A通过使用B的公钥加密数据后发给B,B利用B的私钥解密就得到了需要的数据(进过B公钥加密的数据只有B的私钥能够
* 解开,C没有B的私钥,所以C解不开,但C可以使用B的公钥加密一份数据发给B,这样一来,问题来了,B收到的数据到
* 底是A发过来的还是C发过来的呢)
* 由于私钥是唯一的,那么A就可以利用A自己的私钥进行加密,然后B再利用A的公钥来解密,就可以确定:一定是A的消
* 息,数字签名的原理就基于此
*
* 总结:A想将目标数据传给B,此时A需要准备1和2两部分
* 1:A使用B的公钥将原始信息加密,以起到保密作用(只有B的私钥能解开,其他人使用其他钥匙都解不开,当然就保密咯)
* 2:A使用A的私钥将原始信息的摘要进行签名,以起到接收方B确定是A发过来的作用(A用A的私钥对目标数据的摘要进行签
* 名,然后传给B,同时,C用C的私钥对任意信息进行签名也传给B,B想接受的是A的数据(比如说一个转帐请求),于是B
* 就通过A的公钥对接受到的两个信息进行解密,解开的就是A(A的公钥能且只能解开A的私钥加密的数据))
*/
public class DigitalSignature {
public static void main(String[] args) throws Exception {
String before = "asdf";
byte[] plainText = before.getBytes("UTF8");
//形成RSA公钥对
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
//使用私钥签名**********************************************************
Signature sig = Signature.getInstance("SHA1WithRSA");
sig.initSign(key.getPrivate());//sig对象得到私钥
//签名对象得到原始数据
sig.update(plainText


相关文档:

java小结

1 作用域
   java中作用域的范围由花括号标示。
2关于static 
 垃圾收集器只知道搜集那些有new运算符分配的内存,不知道如何释放特殊内存。
 如果垃圾收集器准备回收对象的内存,它首先调用finalize(),而且只有在下一次垃圾搜集过程中,才会真正回收对象的内存。所以说如果使用
 final ......

java 相关的书 Rubicon

《Java how to program》
《Core java 2》
《Thinking in java》
《程序设计实践》
《代码大全》
《设计模式》
《java 网络编程》
serverlet jsp javabean spring habernate mysql等。 ......

java高级多线程编程 关于线程的停止问题(转)

多线程是java的一个优势,java使得程序员可以很方便的进行多线程程序开发。获得更好的性能。
关于多线程的概念以及一般的多线程编程,比如如何以及为何实现runnable接口,为何stop()会被Deprecated掉等等,这个请看matrix之前的多线程编程基础或者sun的java文档。
关于多线程编程,有几点这里要提到的:
1。既然stop( ......

java开发者常去的20个网站

原文链接:http://java.csdn.net/index.php/2009/09/01/java%e5%bc%80%e5%8f%91%e8%80%85%e6%9c%80%e5%b8%b8%e5%8e%bb%e7%9a%8420%e4%b8%aa%e8%8b%b1%e6%96%87%e7%bd%91%e7%ab%99/
JAVA开发者最常去的20个英文网站
1.[http://www.javaalmanac.com] – Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法 ......

Java线程之Worker Thread Pattern

Worker Thread Pattern的参与者:
1. Client(委托人)参与者
    Client参与者会建立Request参与者,并传给Channel参与者。
2. Channel(通路)参与者
    Channel参与者会从Client参与者获取Request参与者,传递给Worker参与者。
3. Worker(工人)参与者
    Worker ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号