仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1165|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:java 密aW

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:41:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。1.密aW介C加密c解密
加密是一⒂用艿馁Y料用一些W算D成一F使人看不懂的|西的^程;解密t是⒓用芪霓DQ回原始笔墨的^程。@^程中,饰演原始笔墨c加密笔墨之gDQ的W演算法QCipher。



D1Cipher的作

F代的Cipher多数Key砑用芘c解密Y料。所^Key是指一C密值,我可⑺橐煌ㄐ忻艽a。加密笔墨必须利用τ车Key才干解密樵嘉淖帧
  A.ΨQ型Cipher
ΨQ型Cipher在魉投伺c吸收端所用的Key是一拥模D2所示,ΨQ型Cipher又叫PrivateKeyCipher,因Key的值只要魉投撕徒邮斩酥馈H绻械谌咧懒PrivateKey值,也就可以解_加密的Y料。



D2ΨQ型Cipher的作

  B.非ΨQ型Cipher
非ΨQ型的Cipher又叫PublicKeyCipher,Cipher除PrivateKey外,M一能够S意散l的PublicKey。被PublicKey加密的Y料只要相τ车PrivateKey能够解_,同拥谋PrivateKey加密的Y料也只要相τ车PublicKey能够解_。如D3所示,@示了非ΨQ型Cipher的作^程。



D3非ΨQ型Cipher的作

  C.息择要(MessageDigest)
息择要是一M进Y料算所得的一特e底郑湓磉作就如hashfunction一样平常。在密aW的用e,通常为用眚CY料是不是被Z改。

2.JCE下d
因槊ㄒ南拗疲Sun在JDKe只供应了少档募用芊椒ǎ漯N年夜部分t只在SunJCEe供应,并且SunJCE的API限定只要美⒓幽么蟮^能够下d。表1Sun及SunJCE分e增援的加密演算法。


名Q
型e

Sun
MD5
息择要

SHA-1
息择要

DSA


SunJCE
HmacMD5
MAC

HmacSHA1
MAC

DES
ΨQ型Cipher

DESede
非ΨQ型Cipher

PBEWithMD5AndDES
ΨQ型Cipher

DH
Key的交Q


表1Sun及SunJCE增援的加密演算法

m然美ㄒ羞@拥南薅ǎ窃诿惩庖惨呀有S商作出JCE,K且能够在W路上间接下d,表2就是下dW址的列表。
套件
W址
免M

JCE
http://java.sun.com/products/jdk/1.2/jce/


Cryptix
http://www.cryptix.org/


IAIK
http://wwwjce.iaik.tu-graz.ac.at/



表2JCEw下dW址

3.JCE安b

解嚎s到JDK面前目今
SetClassPath=C:JDKincryptix-jce-api.jar;C:JDKincryptix-jce-compat.jar;C:JDKincryptix-jce-provider.jar…
在JDK/lib/security/java.security中到场
security.provider.1=sun.security.provider.Sun(原砭陀械)
security.provider.2=cryptix.jce.provider.Cryptix(到场)


4.程式例
在e例之前,我先完成一公用e,用⒆执D成十六M位暗示法。
publicclassMsg{
 publicstaticStringtoHexString(byte[]b){
  StringBufferhexString=newStringBuffer();
  StringplainText;

  for(inti=0;i<b.length;i++){
   plainText=Integer.toHexString(0xFF&b[i]);
   if(plainText.length()<2){
    plainText="0"+plainText;
   }
   hexString.append(plainText);
  }
  returnhexString.toString();
 }
}

5.息择要(messagedigest,以SHA1槔)
  a生息择要的步E:

呼唤getInstance获得MessageDigestw
呼唤update①Y料joMessageDigest
呼唤digesta生息择要

importjava.security.*;

publicclassSHAextendsObject{
 publicstaticvoidmain(String[]args)throwsException
 {
  MessageDigestmd=MessageDigest.getInstance("SHA");
  md.update(args[0].getBytes());
  byte[]digest=md.digest();
  System.out.println(Msg.toHexString(digest));
 }
}

ps.比^息择要是不是不异r,可呼唤isEqual。

6.息JCa(MAC,以HmacSHA1槔)
息JCa只是在a生息择要的^程e,加M一把key做楸Wo,目标是使息择要更y被破解。
  a生息JCa的步E:

使用密aa生一把key
呼唤getInstance获得Macw
呼唤init,初始化Mac
呼唤updatejY料oMac
呼唤doFinala生息JCa

importjava.security.*;
importjavax.crypto.*;
importjavax.crypto.spec.*;

publicclassMacSHA{
 publicstaticvoidmain(String[]args)
 {
  SecureRandomsr=newSecureRandom();
  byte[]keyBytes=newbyte[20];
  sr.nextBytes(keyBytes);
  SecretKeykey=newSecretKeySpec(keyBytes,"HmacSHA");

  try{
   Macm=Mac.getInstance("HmacSHA");
   m.init(key);
   m.update(args[0].getBytes());
   byte[]mac=m.doFinal();
   System.out.println(Msg.toHexString(mac));
  }
  catch(Exceptione){
   System.out.println("Exception!!");
  }
 }
}


7.加密c解密(以DES槔)
@ee的加密/解密是ΨQ型Cipher;在金融买卖e,经常使用ΨQ型Cipher砑/解密Y料。
  加密/解密的步E:

使用密aa生一把key
呼唤getInstancea生一Cipher物件
呼唤initO定榧用芑蚪饷
加密/解密

importjava.io.*;
importjava.security.*;
importjavax.crypto.*;

publicclassPwdDES{
 publicstaticfinalintkBufferSize=8192;

 publicstaticvoidmain(String[]args)throwsException{
  if(args.length<4){
   System.out.println("Usage:Cloak-e|-dpasswdinputfileoutputfile");
   return;
  }

  //Getorcreatekey.

  Keykey;

  KeyGeneratorgenerator=KeyGenerator.getInstance("DES");
  generator.init(newSecureRandom(args[1].getBytes()));
  key=generator.generateKey();

  //Getacipherobject
  Ciphercipher=Cipher.getInstance("DES/ECB/PKCS#5");

  //Encryptordecrypt
  if(args[0].indexOf("e")!=-1)
   cipher.init(Cipher.ENCRYPT_MODE,key);
  else
   cipher.init(Cipher.DECRYPT_MODE,key);

  FileInputStreamin=newFileInputStream(args[2]);
  FileOutputStreamfileOut=newFileOutputStream(args[3]);
  CipherOutputStreamout=newCipherOutputStream(fileOut,cipher);
  byte[]buffer=newbyte[kBufferSize];
  intlength;
  while((length=in.read(buffer))!=-1)
   out.write(buffer,0,length);
  in.close();
  out.close();
 }

}


8.a生章cJC(以DSA槔)
滴缓章经常使用在W路上做人身份_J。
  a生章的步E:

呼唤getInstance获得一Signaturew
呼唤initSign初始化Signature
呼唤signa生章

  JC的步E:

呼唤getInstance获得一Signaturew
呼唤initVerify初始化Signature
呼唤verifyJC

Sample1:a生Private/PublicKey

importjava.security.*;
importjava.security.KeyPairGenerator;
importjava.security.KeyPair;
importjava.io.*;

publicclassKeyPair1{

 publicstaticvoidmain(String[]args)
 {
  try{
   KeyPairGeneratorgenKeyPair=KeyPairGenerator.getInstance("DSA");
   genKeyPair.initialize(1024,newSecureRandom());
   KeyPairkpKey=genKeyPair.genKeyPair();
   PrivateKeyprKey=kpKey.getPrivate();
   PublicKeypuKey=kpKey.getPublic();

   ObjectOutputStreamosPrivate=newObjectOutputStream(newFileOutputStream("D:Private.Key"));
   ObjectOutputStreamosPublic=newObjectOutputStream(newFileOutputStream("D:Public.Key"));
   osPrivate.writeObject(prKey);
   osPublic.writeObject(puKey);

   osPrivate.close();
   osPublic.close();
  }
  catch(Exceptione){
   System.out.println("Error");
  }
 }
}

Sample2:a生章cJC

importjava.io.*;
importjava.security.*;
importjava.security.Signature;
importjava.security.cert.*;

publicclassGenSign{

 publicstaticvoidmain(String[]args)throwsException{
  Stringoptions=args[0];
  Stringmessagefile=args[1];
  Stringsignaturefile=args[2];

  Signaturesignature=Signature.getInstance("DSA");
  if(options.indexOf("s")!=-1){
   ObjectInputStreamis=newObjectInputStream(newFileInputStream("D:Private.key"));
   PrivateKeypriKey=(PrivateKey)is.readObject();
   signature.initSign(priKey);
   is.close();
  }
  else{
   ObjectInputStreamis=newObjectInputStream(newFileInputStream("D:Public.key"));
   PublicKeypubKey=(PublicKey)is.readObject();
   signature.initVerify(pubKey);
   is.close();
  }

  FileInputStreamin=newFileInputStream(messagefile);
  byte[]buffer=newbyte[8192];
  intlength;
  while((length=in.read(buffer))!=-1)
   signature.update(buffer,0,length);
  in.close();

  if(options.indexOf("s")!=-1){
   FileOutputStreamout=newFileOutputStream(signaturefile);
   byte[]raw=signature.sign();
   out.write(raw);
   out.close();
  }
  else{
   FileInputStreamsigIn=newFileInputStream(signaturefile);
   byte[]raw=newbyte[sigIn.available()];
   sigIn.read(raw);
   sigIn.close();
   if(signature.verify(raw))
    System.out.println("Thesignatureisgood.");
   else
    System.out.println("Thesignatureisbad.");
  }
 }
}



如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
变相怪杰 该用户已被删除
沙发
发表于 2015-1-21 12:57:12 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
小女巫 该用户已被删除
板凳
发表于 2015-1-30 18:38:16 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
分手快乐 该用户已被删除
地板
发表于 2015-2-2 11:03:35 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
活着的死人 该用户已被删除
5#
发表于 2015-2-4 10:51:12 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
山那边是海 该用户已被删除
6#
发表于 2015-2-9 20:49:48 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
冷月葬花魂 该用户已被删除
7#
发表于 2015-2-10 01:43:08 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
再现理想 该用户已被删除
8#
发表于 2015-2-18 18:34:51 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
谁可相欹 该用户已被删除
9#
发表于 2015-2-22 08:24:18 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
蒙在股里 该用户已被删除
10#
发表于 2015-3-6 23:40:49 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-7 07:48:09 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
飘灵儿 该用户已被删除
12#
发表于 2015-3-7 11:56:18 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
若天明 该用户已被删除
13#
发表于 2015-3-15 03:11:27 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
只想知道 该用户已被删除
14#
发表于 2015-3-20 15:42:57 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
金色的骷髅 该用户已被删除
15#
发表于 2015-4-11 03:11:36 | 只看该作者
是一种为 Internet发展的计算机语言
乐观 该用户已被删除
16#
发表于 2015-4-18 04:40:46 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
若相依 该用户已被删除
17#
发表于 2015-5-1 06:16:45 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
admin 该用户已被删除
18#
发表于 2015-5-4 20:10:18 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
莫相离 该用户已被删除
19#
发表于 2015-5-5 03:33:36 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
透明 该用户已被删除
20#
发表于 2015-5-11 02:47:43 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表