java流密码代码实现 javaio流代码

急求:流密码的算法,用JAVA

Java中的IO流使用的是Decorator设计模式

创新互联公司致力于互联网网站建设与网站营销,提供成都网站制作、成都网站设计、外贸营销网站建设、网站开发、seo优化、网站排名、互联网营销、重庆小程序开发、公众号商城、等建站开发,创新互联公司网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。

所以只要写两个装饰者类

覆盖write和read方法

在write前和read后对原数据进行一些处理(比如异或操作)就可以了

我吃过饭写个贴上来……

--------------------------------------------------------

// EncryptStream.java

import java.io.IOException;

import java.io.OutputStream;

/**

*

* 类型描述 加密流

*

* @since 2009-5-22

* @author 何智刚

*

*/

public class EncryptStream extends OutputStream {

private byte key;

private OutputStream out;

/**

*

* @param key 密钥

* @param in 需要加密的流

*/

public EncryptStream(byte key, OutputStream out) {

this.key = key;

this.out = out;

}

@Override

public void write(int b) throws IOException {

out.write(b ^ key);

}

}

// DecryptStream.java

import java.io.IOException;

import java.io.InputStream;

/**

*

* 类型描述 解密流

*

* @since 2009-5-22

* @author 何智刚

*

*/

public class DecryptStream extends InputStream {

private byte key;

private InputStream in;

/**

*

* @param key 密钥

* @param in 需要解密的流

*/

public DecryptStream(byte key, InputStream in) {

this.key = key;

this.in = in;

}

@Override

public int read() throws IOException {

return in.read() ^ key;

}

@Override

public int read(byte[] b, int off, int len) throws IOException {

byte[] temp = new byte[b.length];

int c = in.read(temp, off, len);

for (int i = 0; i b.length; i++) {

b[i] = (byte) (temp[i] ^ key);

}

return c;

}

}

// Client.java

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class Client {

public static void main(String[] args) throws Exception {

byte key = 25;

encryptFile("要加密的文件.dat", "加密过的文件.dat", key);

decryptFile("加密过的文件.dat", "解密出来的文件.dat", key);

}

/**

*

* 方法描述 加密文件

*

* @param src 要加密的文件的路径

* @param des 加密过后的文件的存放路径

* @param key 密钥

* @throws Exception

*

* @变更记录 2009-5-22 下午12:42:25 何智刚 创建

*

*/

public static void encryptFile(String src, String des, byte key)

throws Exception {

InputStream in = new FileInputStream(src);

OutputStream out = new EncryptStream(key, new FileOutputStream(des));

byte[] buf = new byte[8192];

int c;

while ((c = in.read(buf)) 0) {

out.write(buf, 0, c);

}

in.close();

out.flush();

out.close();

}

/**

*

* 方法描述 解密文件

*

* @param src 要解密的文件的路径

* @param des 解密过后的文件的存放路径

* @param key 密钥

* @throws Exception

*

* @变更记录 2009-5-22 下午12:43:04 何智刚 创建

*

*/

public static void decryptFile(String src, String des, byte key)

throws Exception {

InputStream in = new DecryptStream(key, new FileInputStream(src));

OutputStream out = new FileOutputStream(des);

byte[] buf = new byte[8192];

int c;

while ((c = in.read(buf)) 0) {

out.write(buf, 0, c);

}

in.close();

out.flush();

out.close();

}

}

-----------------------------------------------

我在例子里没有用BufferedStream,而是自己创建了个byte[]做缓冲区,因为这样性能更好。用BufferedStream的话代码会更简单。

java 以流的形式解压带密码的zip

可以使用 Runtime 直接调用 winRar 的命令行命令来解压缩

注意:

1、winRar命令使用,在dos下输入 unrar 就可以看到全部的命令说明。该命令在winRar的安装目录下

2、winRar命令行命令的路径问题,也就是path。要么加入系统变量path中,要么在winRar的安装目录下执行程序

以下是程序代码,解压 test.rar 到当前目录下,密码123

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class TestRunTime {

public static void main(String[] args) {

Runtime run = Runtime.getRuntime();

try {

Process p = run.exec("unrar e test.rar -p123");//执行解压缩命令

BufferedInputStream in = new BufferedInputStream(p.getInputStream());

BufferedReader inBr = new BufferedReader(new InputStreamReader(in));

String lineStr;

while ((lineStr = inBr.readLine()) != null)

System.out.println(lineStr);

// 检查命令是否执行失败。

if (p.waitFor() != 0) {

if (p.exitValue() == 1)// p.exitValue()==0表示正常结束,1:非正常结束

System.err.println("命令执行失败!");

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

用JAVA代码实现登录名字与密码

1.写一个操作数据库的通用DAO(假设为Dao.java),提供

·加载数据库驱动和获取数据库连接的方法:void getConnection();

·执行查询的方法:ResultSet executeQuery(String sql);

·执行更新的方法:Integer executeUpdate(String sql);

·关闭资源的方法:void releaseResource(Connection con);

2.在你的界面中把用户名和密码取出来

·username = yourTextField.getText();

·password = yourPasswordField.getText();

3.匹配

·验证username、password是否是有效输入值(例如:不能包含特殊字符,不能有注入嫌疑等)

·String sql = "select * from yourTable where username='"+username+"' and password='"+password+"'" ;

·Dao.executeQuery(sql):如果有结果说明合法,否则不合法。

不懂Connect 我


网站名称:java流密码代码实现 javaio流代码
文章源于:http://scyanting.com/article/doijhci.html