900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java对sha1的解密_Java实现文件的加密解密功能示例

java对sha1的解密_Java实现文件的加密解密功能示例

时间:2020-08-02 00:21:57

相关推荐

java对sha1的解密_Java实现文件的加密解密功能示例

本文实例讲述了java实现文件的加密解密功能分享给大家供大家参考,具体如下:

package com.copy.encrypt;

import java.io.file;

import java.io.fileinputstream;

import java.io.filenotfoundexception;

import java.io.fileoutputstream;

import java.io.ioexception;

import java.io.inputstream;

import java.io.outputstream;

import java.io.randomaccessfile;

public class fileencryptanddecrypt {

/**

* 文件file进行加密

* @param fileurl 文件路径

* @param key 密码

* @throws exception

*/

public static void encrypt(string fileurl, string key) throws exception {

file file = new file(fileurl);

string path = file.getpath();

if(!file.exists()){

return;

}

int index = path.lastindexof("\\");

string destfile = path.substring(0, index)+"\\"+"abc";

file dest = new file(destfile);

inputstream in = new fileinputstream(fileurl);

outputstream out = new fileoutputstream(destfile);

byte[] buffer = new byte[1024];

int r;

byte[] buffer2=new byte[1024];

while (( r= in.read(buffer)) > 0) {

for(int i=0;i

{

byte b=buffer[i];

buffer2[i]=b==255?0:++b;

}

out.write(buffer2, 0, r);

out.flush();

}

in.close();

out.close();

file.delete();

dest.renameto(new file(fileurl));

appendmethoda(fileurl, key);

system.out.println("加密成功");

}

/**

*

* @param filename

* @param content 密钥

*/

public static void appendmethoda(string filename, string content) {

try {

// 打开一个随机访问文件流,按读写方式

randomaccessfile randomfile = new randomaccessfile(filename, "rw");

// 文件长度,字节数

long filelength = randomfile.length();

//将写文件指针移到文件尾。

randomfile.seek(filelength);

randomfile.writebytes(content);

randomfile.close();

} catch (ioexception e) {

e.printstacktrace();

}

}

/**

* 解密

* @param fileurl 源文件

* @param tempurl 临时文件

* @param ketlength 密码长度

* @return

* @throws exception

*/

public static string decrypt(string fileurl, string tempurl, int keylength) throws exception{

file file = new file(fileurl);

if (!file.exists()) {

return null;

}

file dest = new file(tempurl);

if (!dest.getparentfile().exists()) {

dest.getparentfile().mkdirs();

}

inputstream is = new fileinputstream(fileurl);

outputstream out = new fileoutputstream(tempurl);

byte[] buffer = new byte[1024];

byte[] buffer2=new byte[1024];

byte bmax=(byte)255;

long size = file.length() - keylength;

int mod = (int) (size%1024);

int div = (int) (size>>10);

int count = mod==0?div:(div+1);

int k = 1, r;

while ((k <= count && ( r = is.read(buffer)) > 0)) {

if(mod != 0 && k==count) {

r = mod;

}

for(int i = 0;i < r;i++)

{

byte b=buffer[i];

buffer2[i]=b==0?bmax:--b;

}

out.write(buffer2, 0, r);

k++;

}

out.close();

is.close();

return tempurl;

}

/**

* 判断文件是否加密

* @param filename

* @return

*/

public static string readfilelastbyte(string filename, int keylength) {

file file = new file(filename);

if(!file.exists())return null;

stringbuffer str = new stringbuffer();

try {

// 打开一个随机访问文件流,按读写方式

randomaccessfile randomfile = new randomaccessfile(filename, "r");

// 文件长度,字节数

long filelength = randomfile.length();

//将写文件指针移到文件尾。

for(int i = keylength ; i>=1 ; i--){

randomfile.seek(filelength-i);

str.append((char)randomfile.read());

}

randomfile.close();

return str.tostring();

} catch (ioexception e) {

e.printstacktrace();

}

return null;

}

}

ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含aes、des、rc4等):

在线散列/哈希算法加密工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

希望本文所述对大家java程序设计有所帮助。

希望与广大网友互动??

点此进行留言吧!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。