搜索
首页 电脑/网络 软件 系统软件

Java如何加密和数字签名 ?

Java如何加密和数字签名 ?

全部回答

2018-04-03

66 0

    数字签名: 数字签名,它是确定交换消息的通信方身份的第一个级别。上面A通过使用公钥加密数据后发给B,B利用私钥解密就得到了需要的数据,问题来了,由于都是使用公钥加密,那么如何检验是 A发过来的消息呢?上面也提到了一点,私钥是唯一的,那么A就可以利用A自己的私钥进行加密,然后B再利用A的公钥来解密,就可以了;数字签名的原理就基于此,而通常为了证明发送数据的真实性,通过利用消息摘要获得简短的消息内容,然后再利用私钥进行加密散列数据和消息一起发送。
    java中为数字签名提供了良好的支持,java。security。Signature类提供了消息签名: Java代码 /** *DigitalSignature2Example。
  java *Copyright 2005-2-16 */ import java。security。  Signature; import java。security。KeyPairGenerator; import java。
  security。KeyPair; import java。security。SignatureException; /** *数字签名,使用RSA私钥对对消息摘要签名,然后使用公鈅验证 测试 */ public class DigitalSignature2Example{ public static void main(String[] args) throws Exception{ if(args。
    length!=1){ System。err。println("Usage:java DigitalSignature2Example "); System。exit (1); } byte[] plainText=args[0]。
  getBytes("UTF8"); //形成RSA公钥对 System。  out。println(" Start generating RSA key"); KeyPairGenerator keyGen=KeyPairGenerator。
  getInstance("RSA"); keyGen。initialize(1024); KeyPair key=keyGen。  generateKeyPair(); System。
  out。println("Finish generating RSA key"); //使用私鈅签名来源:考试大的美女编辑们 Signature sig=Signature。getInstance("SHA1WithRSA"); sig。
    initSign(key。getPrivate()); sig。update(plainText); byte[] signature=sig。sign(); System。
  out。println(sig。getProvider()。getInfo()); System。  out。println(" Signature:"); System。
  out。println(new String(signature,"UTF8")); //使用公鈅验证 System。out。println(" Start signature verification"); sig。
    initVerify(key。getPublic()); sig。update(plainText); try{ if(sig。verify(signature)){ System。
  out。println("Signature verified"); }else System。  out。println("Signature failed"); }catch(SignatureException e){ System。
  out。println("Signature failed"); } } }。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报