⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java加密和数字签名编程快速入门 2.htm

📁 JAVA文档,用于实现加密入门很有帮助,现在很多编程都需要有加密技术,以提高安全,这只是JAVA的学习书籍,希望对大家有帮助
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<TABLE cellSpacing=0 cellPadding=0 width=776 border=0>
  <TBODY>
  <TR>
    <TD width=1 bgColor=#b9bebe></TD>
    <TD align=middle width=774 bgColor=#eff8ff height=100><IFRAME 
      src="Java加密和数字签名编程快速入门 2.files/;pl=pl-15-etime-all;tp=if;sk=0;ck=0;.htm" 
      frameBorder=0 width=760 scrolling=no height=90></IFRAME></TD>
    <TD width=1 bgColor=#b9bebe></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=776 border=0>
  <TBODY>
  <TR>
    <TD bgColor=#b9bebe height=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=776 border=0>
  <TBODY>
  <TR>
    <TD width=1 bgColor=#b9bebe rowSpan=13></TD>
    <TD vAlign=top width=603 bgColor=#f0f2fb>
      <TABLE cellSpacing=0 cellPadding=0 width=603 border=0>
        <TBODY>
        <TR>
          <TD width=10></TD>
          <TD width=55>您的位置:</TD>
          <TD width=538><A 
            href="http://www.yesky.com/SoftChannel/72339069014638592/index.shtml">软件</A> 
            &gt; <A 
            href="http://www.yesky.com/SoftChannel/72342367549521920/index.shtml">开发者网络</A> 
            &gt; <A 
            href="http://www.yesky.com/SoftChannel/72342371844489216/index.shtml">开发工具</A> 
            &gt; <A 
            href="http://www.yesky.com/SoftChannel/72342371961929728/index.shtml">Java</A> 
            &gt; 正文</TD></TR>
        <TR></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=603 border=0>
        <TBODY>
        <TR>
          <TD bgColor=#dee2f5 height=40>
            <TABLE height=40 cellSpacing=0 cellPadding=0 width=590 align=center 
            border=0>
              <TBODY>
              <TR>
                <TD align=middle><FONT 
                  class=f22><B>Java加密和数字签名编程快速入门</B></FONT></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD background="Java加密和数字签名编程快速入门 2.files/newhard-040906_c_1.gif" 
          height=1></TD></TR>
        <TR>
          <TD vAlign=top height=5></TD></TR>
        <TR>
          <TD>
            <TABLE cellSpacing=0 cellPadding=0 width=603 border=0>
              <TBODY>
              <TR>
                <TD vAlign=top align=middle width=373 rowSpan=9>
                  <TABLE cellSpacing=0 cellPadding=0 width=373 align=center 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD align=middle><SPAN id=pip></SPAN></TD></TR>
                    <TR>
                      <TD align=middle><IFRAME 
                        src="Java加密和数字签名编程快速入门 2.files/y-soft-column-1.htm" 
                        frameBorder=0 width=360 scrolling=no 
                      height=50></IFRAME></TD></TR></TBODY></TABLE></TD>
                <TD width=5></TD>
                <TD vAlign=top width=220>
                  <TABLE cellSpacing=0 cellPadding=0 width=220 border=0>
                    <TBODY>
                    <TR>
                      <TD colSpan=2><FONT class=f21><B>[文章信息]</B></FONT></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR>
                    <TR>
                      <TD vAlign=top width=62>作者:</TD>
                      <TD vAlign=top width=158><FONT 
                        color=#0e3e92>jwsh1984</FONT></TD></TR>
                    <TR>
                      <TD vAlign=top>时间:</TD>
                      <TD vAlign=top><FONT 
                    color=#0e3e92>2005-02-17</FONT></TD></TR>
                    <TR>
                      <TD vAlign=top>出处:</TD>
                      <TD vAlign=top><FONT color=#0e3e92>blog</FONT></TD></TR>
                    <TR>
                      <TD vAlign=top>责任编辑:</TD>
                      <TD vAlign=top><FONT color=#0e3e92>方舟</FONT></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR></TBODY></TABLE>
                  <TABLE cellSpacing=0 cellPadding=0 width=220 border=0>
                    <TBODY>
                    <TR>
                      <TD colSpan=2><FONT class=f21><B>[文章导读]</B></FONT></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR>
                    <TR>
                      <TD vAlign=top colSpan=2><SPAN 
                        class=f14>本文主要谈一下密码学中的加密和数字签名,以及其在java中如何进行使用</SPAN></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR></TBODY></TABLE>
                  <SCRIPT 
                  language=JavaScript><!--var ad_id=1003//--></SCRIPT>

                  <SCRIPT language=JavaScript 
                  src="Java加密和数字签名编程快速入门 2.files/10.js"></SCRIPT>
                </TD>
                <TD width=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
    <TD width=1 bgColor=#b9bebe rowSpan=13></TD>
    <TD vAlign=top align=middle width=170 bgColor=#ffffff rowSpan=13>
      <TABLE cellSpacing=5 cellPadding=0 width=165 border=0>
        <TBODY>
        <TR>
          <TD align=middle>
            <SCRIPT language=JavaScript><!--var ad_id=0403//--></SCRIPT>

            <SCRIPT language=JavaScript 
            src="Java加密和数字签名编程快速入门 2.files/04.js"></SCRIPT>
          </TD></TR></TBODY></TABLE>
      <TABLE height=28 cellSpacing=0 cellPadding=0 width=160 
      background="Java加密和数字签名编程快速入门 2.files/2004-30.gif" border=0>
        <TBODY>
        <TR>
          <TD align=middle><B>advertisement</B></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
        <TBODY>
        <TR>
          <TD width=1 bgColor=#adadad></TD>
          <TD align=middle bgColor=#ffffff><SPAN id=sv></SPAN></TD>
          <TD width=1 bgColor=#adadad></TD></TR></TBODY></TABLE>
      <TABLE height=1 cellSpacing=0 cellPadding=0 width=160 bgColor=#adadad 
      border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE>
      <TABLE height=10 cellSpacing=0 cellPadding=0 width=160 border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE>
      <TABLE height=28 cellSpacing=0 cellPadding=0 width=160 
      background="Java加密和数字签名编程快速入门 2.files/2004-30.gif" border=0>
        <TBODY>
        <TR>
          <TD align=middle><B>热点推荐</B></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
        <TBODY>
        <TR>
          <TD width=1 bgColor=#adadad></TD>
          <TD align=middle bgColor=#ffffff>
            <TABLE cellSpacing=0 cellPadding=2 width=150 border=0>
              <TBODY>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72342371928637440/20050217/1911703.shtml" 
                  target=_blank>在VB6中用命令行为模式控制GUI动作</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72357786515668992/20050216/1911308.shtml" 
                  target=_blank>Excel图表向导详解</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72356699922497536/20041123/1878990.shtml" 
                  target=_blank>浅析各种计算机病毒应对方法</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72339069014638592/20050216/1911585.shtml" 
                  target=_blank>2月16日软件精选 春节文章精彩回顾</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72348968914255872/20050216/1911545.shtml" 
                  target=_blank>轻松玩转Excel数据图表</A></TD></TR></TBODY></TABLE></TD>
          <TD width=1 bgColor=#adadad></TD></TR></TBODY></TABLE>
      <TABLE height=1 cellSpacing=0 cellPadding=0 width=160 bgColor=#adadad 
      border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=1 bgColor=#b9bebe rowSpan=13></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb height=5></TD></TR>
  <TR>
    <TD vAlign=top background="Java加密和数字签名编程快速入门 2.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#dee2f5>
      <TABLE height=25 cellSpacing=0 cellPadding=0 width=590 align=center 
      border=0>
        <TBODY>
        <TR>
          <TD width=90><FONT class=f21><B>[正文]</B></FONT></TD>
          <TD align=right width=480>
            <P align=right><FONT color=red><A 
            href="http://www.yesky.com/SoftChannel/72342371961929728/20050217/1911753.shtml">上一页</A>&nbsp;&nbsp;<A 
            href="http://www.yesky.com/SoftChannel/72342371961929728/20050217/1911753.shtml">1</A> 
            2 <A 
            href="http://www.yesky.com/SoftChannel/72342371961929728/20050217/1911753_2.shtml">3</A> 
            &nbsp;<A 
            href="http://www.yesky.com/SoftChannel/72342371961929728/20050217/1911753_2.shtml">下一页</A></FONT></P></TD>
          <TD align=middle width=20></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD vAlign=top background="Java加密和数字签名编程快速入门 2.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb height=10></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb>
      <TABLE cellSpacing=0 cellPadding=0 width=590 align=center border=0>
        <TBODY>
        <TR>
          <TD><SPAN 
            class=f14>  4)数字签名:<BR><BR>  数字签名,它是确定交换消息的通信方身份的第一个级别。上面A通过使用公钥加密数据后发给B,B利用私钥解密就得到了需要的数据,问题来了,由于都是使用公钥加密,那么如何检验是A发过来的消息呢?上面也提到了一点,私钥是唯一的,那么A就可以利用A自己的私钥进行加密,然后B再利用A的公钥来解密,就可以了;数字签名的原理就基于此,而通常为了证明发送数据的真实性,通过利用消息摘要获得简短的消息内容,然后再利用私钥进行加密散列数据和消息一起发送。java中为数字签名提供了良好的支持,java.security.Signature类提供了消息签名:<BR><BR>
            <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf 
            border=1>
              <TBODY>
              <TR>
                <TD>/**<BR>*DigitalSignature2Example.java<BR>*Copyright 
                  2005-2-16<BR>*/<BR>import java.security.Signature;<BR>import 
                  java.security.KeyPairGenerator;<BR>import 
                  java.security.KeyPair;<BR>import 
                  java.security.SignatureException;<BR><BR>/**<BR>*数字签名,使用RSA私钥对对消息摘要签名,然后使用公鈅验证 
                  测试<BR>*/<BR>public class DigitalSignature2Example{<BR> public 
                  static void main(String[] args) throws 
                  Exception{<BR>  if(args.length!=1){<BR>   System.err.println("Usage:java 
                  DigitalSignature2Example 
                  &lt;text&gt;");<BR>   System.exit(1);<BR>  }<BR><BR>  byte[] 
                  plainText=args[0].getBytes("UTF8");<BR>  //形成RSA公钥对<BR>  System.out.println("\nStart 
                  generating RSA key");<BR>  KeyPairGenerator 
                  keyGen=KeyPairGenerator.getInstance("RSA");<BR>  keyGen.initialize(1024);<BR><BR>  KeyPair 
                  key=keyGen.generateKeyPair();<BR>  System.out.println("Finish 
                  generating RSA key");<BR>  //使用私鈅签名<BR>  Signature 
                  sig=Signature.getInstance("SHA1WithRSA");<BR>  sig.initSign(key.getPrivate());<BR>  sig.update(plainText);<BR>  byte[] 
                  signature=sig.sign();<BR>  System.out.println(sig.getProvider().getInfo());<BR>  System.out.println("\nSignature:");<BR>  System.out.println(new 
                  String(signature,"UTF8"));<BR><BR>  //使用公鈅验证<BR>  System.out.println("\nStart 
                  signature 
                  verification");<BR>  sig.initVerify(key.getPublic());<BR>  sig.update(plainText);<BR>  try{<BR>   if(sig.verify(signature)){<BR>    System.out.println("Signature 
                  verified");<BR>   }else System.out.println("Signature 
                  failed");<BR>   }catch(SignatureException 
                  e){<BR>    System.out.println("Signature 
                  failed");<BR>   }<BR>  }<BR>}</TD></TR></TBODY></TABLE><BR>  5)数字证书。<BR><BR>  还有个问题,就是公钥问题,A用私钥加密了,那么B接受到消息后,用A提供的公钥解密;那么现在有个讨厌的C,他把消息拦截了,然后用自己的私钥加密,同时把自己的公钥发给B,并告诉B,那是A的公钥,结果....,这时候就需要一个中间机构出来说话了(相信权威,我是正确的),就出现了Certificate 
            Authority(也即CA),有名的CA机构有Verisign等,目前数字认证的工业标准是:CCITT的X.509:<BR>数字证书:它将一个身份标识连同公钥一起进行封装,并由称为认证中心或 
            CA 
            的第三方进行数字签名。<BR><BR>  密钥库:java平台为你提供了密钥库,用作密钥和证书的资源库。从物理上讲,密钥库是缺省名称为 
            .keystore 
            的文件(有一个选项使它成为加密文件)。密钥和证书可以拥有名称(称为别名),每个别名都由唯一的密码保护。密钥库本身也受密码保护;您可以选择让每个别名密码与主密钥库密码匹配。 
            <BR><BR>  使用工具keytool,我们来做一件自我认证的事情吧(相信我的认证):<BR><BR>  1、创建密钥库keytool 
            -genkey -v -alias feiUserKey -keyalg RSA 
            默认在自己的home目录下(windows系统是c:\documents and settings\&lt;你的用户名&gt; 
            目录下的.keystore文件),创建我们用 RSA 算法生成别名为 feiUserKey 的自签名的证书,如果使用了-keystore 
            mm 就在当前目录下创建一个密钥库mm文件来保存密钥和证书。<BR><BR>  2、查看证书:keytool -list 
            列举了密钥库的所有的证书 <BR><BR>  也可以在dos下输入keytool 
            -help查看帮助。<BR><BR></SPAN><BR></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb height=10></TD></TR>
  <TR>
    <TD vAlign=top background="Java加密和数字签名编程快速入门 2.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#dee2f5>
      <TABLE height=25 cellSpacing=0 cellPadding=0 width=590 align=center 
      border=0>
        <TBODY>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -