哪位高手知道哪里有应用在网络传输中的加密IO流,谢谢!(在线等待) 我用javax.crypto.CipherInputStream;CipherOutputStream 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你仔细看看,里面有你要的东西,再加上我正在弄的程序(还没有完成)。在读取解密内容时出现错误了。http://www.zdnet.com.cn/developer/code/story/0,2000081534,39038484,00.htmhttp://www.zdnet.com.cn/developer/code/story/0,2000081534,39038484-2,00.htmpackage temptest_project;import java.security.*;import java.security.cert.X509Certificate;import java.io.*;import javax.crypto.*;import javax.crypto.spec.*;import java.lang.*;import com.newman.io.FileReadWrite;/** * PBE算法 * * <p>Title: newman的类库</p> * <p>Description: 没有最好只有更好</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: shu</p> * @author [email protected] * @version 1.0 */ public class PBE{ private String m_Password; private final String SECRETKEYFACTORY= "PBEWithMD5AndDES"; private byte[] m_Salt = { (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c, (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99 }; private PBEKeySpec m_pbeKeySpec=null; private SecretKeyFactory m_keyFac=null; private SecretKey m_pbeKey=null; private PBEParameterSpec m_pbeParamSpec=null; private Cipher m_pbeCipher=null; private int m_Count = 2;//??? public PBE(String password){ this.setPassword(password); init(); } public void setPassword(String password){ this.m_Password =password; } private void init(){ try { this.m_pbeKeySpec = new PBEKeySpec(this.m_Password.toCharArray()); this.m_keyFac = SecretKeyFactory.getInstance(this.SECRETKEYFACTORY); this.m_pbeKey = this.m_keyFac.generateSecret(this.m_pbeKeySpec); // 生成pbe算法所需的参数对象,两个参数详见 RSA的 PKCS #5 标准 this.m_pbeParamSpec = new PBEParameterSpec(this.m_Salt, this.m_Count); // 生成一个加密器 this.m_pbeCipher= Cipher.getInstance(this.SECRETKEYFACTORY); } catch (Exception ex) { } } public byte[] encode(byte[] info){ if(info==null) return null; try{ // 初始化加密器 this.m_pbeCipher.init(Cipher.ENCRYPT_MODE,this.m_pbeKey,this.m_pbeParamSpec); // 明文 byte[] cleartext = info; // 加密 byte[] ciphertext = this.m_pbeCipher.doFinal(cleartext); System.out.println("*********************"); System.out.println("加密后"); for (int i = 0 ;i<ciphertext.length ;i++){ System.out.println(ciphertext[i]); } System.out.println("*********************"); //返回密文 return ciphertext; } catch (Exception e){ System.out.println(e); return null; } } public byte[] decode(byte[] info){ if(info==null) return null; try{ // 初始化加密器 this.m_pbeCipher.init(Cipher.DECRYPT_MODE,this.m_pbeKey, this.m_pbeParamSpec); // 密文 byte[] ciphertext = info; System.out.println("*********************"); System.out.println("解密前"); for (int i = 0 ;i<ciphertext.length ;i++){ System.out.println(ciphertext[i]); } System.out.println("*********************"); // 解密 byte[] cleartext = this.m_pbeCipher.doFinal(ciphertext); //返回明文 return cleartext; } catch (Exception e){ System.out.println(e); return null; } } public InputStream getInputStream(InputStream is) throws IOException { try { this.m_pbeCipher.init(Cipher.DECRYPT_MODE,this.m_pbeKey, this.m_pbeParamSpec); CipherInputStream cis = new CipherInputStream(is, this.m_pbeCipher); return cis; } catch (Exception ex) { return null; } } public OutputStream getOutputStream(OutputStream os) throws IOException { try { this.m_pbeCipher.init(Cipher.ENCRYPT_MODE,this.m_pbeKey,this.m_pbeParamSpec); CipherOutputStream cos = new CipherOutputStream(os, this.m_pbeCipher); return cos; } catch (Exception ex) { return null; } } public void writeFile(OutputStream os,String content){ try { OutputStream os2=this.getOutputStream(os); byte[] tom=content.getBytes(); System.out.println("byte("+tom.length +"): "+new String(tom)); os2.write(content.getBytes()); } catch (Exception ex) { } } public void PRINT(InputStream inputStream){ try { int nEnd=256; byte[] byteTom=new byte[nEnd]; int nCount=0; InputStream is=this.getInputStream(inputStream); System.out.println("following is from is"); while((nCount=is.read(byteTom,0,nEnd))!=-1){ String s=new String (byteTom,0,nEnd); System.out.println(s); } is.close (); } catch (Exception ex) { System.err.println("ERROR: "+ex.toString()); } } public static void main(String[] args) throws Exception{ /* PBE PBE1 = new PBE("100"); byte[] en_string,de_string; en_string = PBE1.encode("127.0.0.1".getBytes()); de_string = PBE1.decode(en_string); System.out.println(new String (en_string)); System.out.println(new String (de_string)); */ PBE PBE1 = new PBE("newman0708"); String content="Description: author [email protected]";//41 String content2="Description: 没有最好只有更好";//29 FileOutputStream bw =new FileOutputStream("f://foo.txt"); PBE1.writeFile(bw,content); BufferedInputStream br =new BufferedInputStream(new FileInputStream("f://foo.txt")); PBE1.PRINT(br); } }/**********************加密后2713-88-12698-16-156164-5812117-82-87-9617******************************************解密前2713-88-12698-16-156164-5812117-82-87-9617*********************[B@388993 ----------这是byte的地址[B@d04653*/ package包语句是作什么用的? 请问如何用java实现实时编程? JDK安装不了,救命啊! 向SQL Server中插入Date型数据出现问题,请各位指教 问一个最基本的问题,再线等待!!! JSP页面问题 我才学java两小时,问题当然不难了,希望得到你的帮助 一个关于Java进程同步的问题!有谁考虑过?进来看看 用 weblogic做服务器?高手进?大分放送!!!急用!! 还是数据类型方面的问题 哪位高手知道哪里有应用在网络传输中的加密IO流,谢谢!(在线等待) 哪位高手知道哪里有应用在网络传输中的加密IO流
import java.security.cert.X509Certificate;
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.lang.*;
import com.newman.io.FileReadWrite;
/**
* PBE算法
*
* <p>Title: newman的类库</p>
* <p>Description: 没有最好只有更好</p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: shu</p>
* @author [email protected]
* @version 1.0
*/
public class PBE{
private String m_Password;
private final String SECRETKEYFACTORY= "PBEWithMD5AndDES";
private byte[] m_Salt = {
(byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
(byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
};
private PBEKeySpec m_pbeKeySpec=null;
private SecretKeyFactory m_keyFac=null;
private SecretKey m_pbeKey=null;
private PBEParameterSpec m_pbeParamSpec=null;
private Cipher m_pbeCipher=null;
private int m_Count = 2;//??? public PBE(String password){
this.setPassword(password);
init();
} public void setPassword(String password){
this.m_Password =password;
}
private void init(){
try {
this.m_pbeKeySpec = new PBEKeySpec(this.m_Password.toCharArray());
this.m_keyFac = SecretKeyFactory.getInstance(this.SECRETKEYFACTORY);
this.m_pbeKey = this.m_keyFac.generateSecret(this.m_pbeKeySpec);
// 生成pbe算法所需的参数对象,两个参数详见 RSA的 PKCS #5 标准
this.m_pbeParamSpec = new PBEParameterSpec(this.m_Salt, this.m_Count);
// 生成一个加密器
this.m_pbeCipher= Cipher.getInstance(this.SECRETKEYFACTORY);
}
catch (Exception ex) {
}
}
public byte[] encode(byte[] info){
if(info==null)
return null;
try{
// 初始化加密器
this.m_pbeCipher.init(Cipher.ENCRYPT_MODE,this.m_pbeKey,this.m_pbeParamSpec);
// 明文
byte[] cleartext = info;
// 加密
byte[] ciphertext = this.m_pbeCipher.doFinal(cleartext);
System.out.println("*********************");
System.out.println("加密后");
for (int i = 0 ;i<ciphertext.length ;i++){
System.out.println(ciphertext[i]);
}
System.out.println("*********************");
//返回密文
return ciphertext;
}
catch (Exception e){
System.out.println(e);
return null;
}
}
public byte[] decode(byte[] info){
if(info==null)
return null;
try{
// 初始化加密器
this.m_pbeCipher.init(Cipher.DECRYPT_MODE,this.m_pbeKey, this.m_pbeParamSpec);
// 密文
byte[] ciphertext = info;
System.out.println("*********************");
System.out.println("解密前");
for (int i = 0 ;i<ciphertext.length ;i++){
System.out.println(ciphertext[i]);
}
System.out.println("*********************");
// 解密
byte[] cleartext = this.m_pbeCipher.doFinal(ciphertext);
//返回明文
return cleartext;
}
catch (Exception e){
System.out.println(e);
return null;
}
}
public InputStream getInputStream(InputStream is) throws IOException {
try {
this.m_pbeCipher.init(Cipher.DECRYPT_MODE,this.m_pbeKey, this.m_pbeParamSpec);
CipherInputStream cis = new CipherInputStream(is, this.m_pbeCipher);
return cis;
}
catch (Exception ex) {
return null;
}
}
public OutputStream getOutputStream(OutputStream os) throws IOException {
try {
this.m_pbeCipher.init(Cipher.ENCRYPT_MODE,this.m_pbeKey,this.m_pbeParamSpec);
CipherOutputStream cos = new CipherOutputStream(os, this.m_pbeCipher);
return cos;
}
catch (Exception ex) {
return null;
}
}
public void writeFile(OutputStream os,String content){
try {
OutputStream os2=this.getOutputStream(os);
byte[] tom=content.getBytes();
System.out.println("byte("+tom.length +"): "+new String(tom));
os2.write(content.getBytes());
}
catch (Exception ex) {
}
}
public void PRINT(InputStream inputStream){
try {
int nEnd=256;
byte[] byteTom=new byte[nEnd];
int nCount=0;
InputStream is=this.getInputStream(inputStream);
System.out.println("following is from is"); while((nCount=is.read(byteTom,0,nEnd))!=-1){
String s=new String (byteTom,0,nEnd);
System.out.println(s);
}
is.close ();
}
catch (Exception ex) {
System.err.println("ERROR: "+ex.toString());
}
}
public static void main(String[] args) throws Exception{
/*
PBE PBE1 = new PBE("100");
byte[] en_string,de_string;
en_string = PBE1.encode("127.0.0.1".getBytes());
de_string = PBE1.decode(en_string);
System.out.println(new String (en_string));
System.out.println(new String (de_string));
*/
PBE PBE1 = new PBE("newman0708");
String content="Description: author [email protected]";//41
String content2="Description: 没有最好只有更好";//29
FileOutputStream bw =new FileOutputStream("f://foo.txt");
PBE1.writeFile(bw,content);
BufferedInputStream br =new BufferedInputStream(new FileInputStream("f://foo.txt"));
PBE1.PRINT(br);
}
}
/*
*********************
加密后
27
13
-88
-126
98
-16
-15
61
64
-58
121
17
-82
-87
-96
17
*********************
*********************
解密前
27
13
-88
-126
98
-16
-15
61
64
-58
121
17
-82
-87
-96
17
*********************
[B@388993 ----------这是byte的地址
[B@d04653
*/