java文件加密|java加密的几种方式

⑴ java软件如何加密

Cipher c=Cipher.getInstance("AES");c.init(c.ENCRYPT_MODE,new SecretKeySpec("1111111111111111".getBytes(),"AES"));FileOutputStream fos=new FileOutputStream("./1.dat");fos.write(c.doFinal("我神不是人啊~专~属".getBytes()));c.init(c.DECRYPT_MODE,new SecretKeySpec("1111111111111111".getBytes(),"AES"));FileInputStream fin=new FileInputStream("./1.dat");byte b[]=new byte[1024];System.out.println(new String(c.doFinal(b,0,fin.read(b))));

⑵ java 一个将文件加密的程序

import java.io.*;class Encrypt{ private String pw; private File fin; private File fout; public Encrypt(File fin,String pw,File fout) throws Exception{ if("".equals(pw)){ System.out.println("密码不能为空"); System.exit(1); } this.pw=pw; if(!fin.exists()){ System.out.println("输入文件不存在"); System.exit(1); } this.fin=fin; if(fout.exists()){ System.out.println("输出文件已存在"); System.exit(1); } this.fout=fout; this.enc(); } public void enc() throws Exception{ byte[] pass=pw.getBytes(); int length=pw.length(); int i=0; InputStream in=new FileInputStream(fin); OutputStream out=new FileOutputStream(fout); int indata; indata=in.read(); while(indata!=-1){ i++; indata^=pass[i%length]; out.write(indata); System.out.print((char)indata); indata=in.read(); } in.close(); out.close();}}public class EncryptFile{ public static void main(String args[]) throws Exception{ if(args.length!=3){ System.out.println("参数错误:参数格式应为: input_file password output_file"); System.exit(1); } File fin=new File(args[0]); File fout=new File(args[2]); new Encrypt(fin,args[1],fout); } }没完全按照你的要求 自己再改改吧 ~~~~~~~~~

⑶ java加密

可以的,但是对jar包直接加密,目前只支持J2SE,还不支持J2EE。更多的还是用混编器(java obfuscator)。下面是关于HASP的介绍。—————————————————–针对java加密防止反编译的解决方案 众所周知,java开发语言提供了很方便的开发平台,开发出来的程序很容易在不同的平台上被移植,现在越来越多的人使用它来开发软件,与.net语言并驾齐驱。 Java有它方便的一面,同时也给开发者带来了一个不小的烦恼,就是保护程序代码变得困难,因为java语言编译和代码执行的特殊性,目前,除了HASP外,还没有一个更好的解决办法或保护方案,但如果不采取有力的措施,则自己辛辛苦苦开发出来的程序很容易被人复制而据为己有,一般情况下,大多数的人都是用混编器(java obfuscator)来把开发出来的程序进行打乱,以想达到防止反编译的目的,但是,这种方法在网上很容易找到相关的软件来重新整理,那么这个混编器工具也只能控制一些本来就没有办法的人,而对于稍懂工具的人几乎是透明的,没有任何意义。再说硬件加密锁,大多数厂商提供的加密锁只能进行dll的连接或简单的api调用,只要简单地反编译,就很容易把api去掉,这样加密锁根本起不了作用,那到底是否还有更好的解决办法呢? 现提供2种解决办法: 1、以色列阿拉丁公司的HASP HL加密锁提供的外壳加密工具中,有一个叫做数据加密的功能,这个功能可以很好的防止反编译而去掉api的调用,大家知道:硬件加密锁的保护原理就是让加密过的软件和硬件紧密地连接在一起,调用不会轻易地被剔除,这样才能持久地保护您的软件不被盗版,同时,这种方式使用起来非常简单,很容易被程序员掌握,要对一个软件实现保护,大约只需几分钟的时间就可以了,下面简单介绍一下它的原理: 运用HASP HL的外壳工具先把java解释器进行加密,那么,如果要启动这个解释器就需要有特定的加密锁存在,然后,再运用外壳工具中的数据加密功能把java程序(CLASS或JAR包)当作一个数据文件来进行加密处理,生成新的java程序(CLASS或JAR包),因为这个加密过程是在锁内完成的,并采用了128位的AES算法,这样,加密后的java程序,无论你采用什么样的反编译工具,都是无法反编译出来的。您的软件也只有被加密过的java解释器并有加密锁的情况下才能正常运行,如果没有加密锁,程序不能运行,从而达到真正保护您的软件的目的。 2、HASP HL提供专门针对java外壳加密工具,直接加密jar包,防止外编译,目前只支持J2SE,将来会进一步支持J2EE,如果情况适合则是最简单的方法。

⑷ java 对大文件怎么加密

选择一个加密算法 输入为bufferIn,输出为bufferOut 循环读取文件,读满缓冲区就调用加密算法,然后输出至目标文件 不可能一次性将几兆的文件一次性进行加密的

⑸ JAVA程序加密,怎么做才安全

程序加密?你说的是代码加密还是数据加密。我都说一下吧。

Java代码加密:

这点因为Java是开源的,想达到完全加密,基本是不可能的,因为在反编译的时候,虽然反编译回来的时候可能不是您原来的代码,但是意思是接近的,所以是不行的。

那么怎么增加反编译的难度(阅读难度),那么可以采用多层继承(实现)方式来解决,这样即使反编译出来的代码,可读性太差,复用性太差了。

Java数据加密:

我们一般用校验性加密,常用的是MD5,优点是速度快,数据占用空间小。缺点是不可逆,所以我们一般用来校验数据有没有被改动等。

需要可逆,可以选用base64,Unicode,缺点是没有密钥,安全性不高。

而我们需要可逆而且采用安全的方式是:对称加密和非堆成加密,我们常用的有AES、DES等单密钥和双密钥的方式。而且是各种语言通用的。

全部手动敲字,望采纳,下面是我用Javascript方式做的一系列在线加密/解密工具:

http://www.sojson.com/encrypt.html

⑹ 如何用java实现文件(不只是txt文本)的整体加密解密

importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmException;importjava.security.interfaces.RSAPrivateKey;importjava.security.interfaces.RSAPublicKey;importjavax.crypto.Cipher;/***文件加密解密*加解密需要依靠以下四个属性, ; staticKeyPairkeyPair; staticRSAPrivateKeyprivateKey; staticRSAPublicKeypublicKey;*@**/publicclassRSAEncrypt{ ; staticKeyPairkeyPair; staticRSAPrivateKeyprivateKey; staticRSAPublicKeypublicKey; static{ try{ //实例类型 keyPairGen=KeyPairGenerator.getInstance("RSA"); //初始化长度 keyPairGen.initialize(512); //声场KeyPair keyPair=keyPairGen.generateKeyPair(); //Generatekeys privateKey=(RSAPrivateKey)keyPair.getPrivate(); publicKey=(RSAPublicKey)keyPair.getPublic(); }catch(NoSuchAlgorithmExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } publicstaticvoidmain(String[]args){ RSAEncryptencrypt=newRSAEncrypt(); Filefile=newFile( "C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf.txt"); FilenewFile=newFile( "C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf1.txt"); encrypt.encryptFile(encrypt,file,newFile); Filefile1=newFile( "C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf1.txt"); FilenewFile1=newFile( "C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf2.txt"); encrypt.decryptFile(encrypt,file1,newFile1); } /** *加密文件 *@paramencryptRSAEncrypt对象 *@paramfile源文件 *@paramnewFile目标文件 */ publicvoidencryptFile(RSAEncryptencrypt,Filefile,FilenewFile){ try{ InputStreamis=newFileInputStream(file); OutputStreamos=newFileOutputStream(newFile); byte[]bytes=newbyte[53]; while(is.read(bytes)>0){ byte[]e=encrypt.encrypt(RSAEncrypt.publicKey,bytes); bytes=newbyte[53]; os.write(e,0,e.length); } os.close(); is.close(); System.out.println("writesuccess"); }catch(Exceptione){ e.printStackTrace(); } } /** *解密文件 *@paramencryptRSAEncrypt对象 *@paramfile *@paramnewFile */ publicvoiddecryptFile(RSAEncryptencrypt,Filefile,FilenewFile){ try{ InputStreamis=newFileInputStream(file); OutputStreamos=newFileOutputStream(newFile); byte[]bytes1=newbyte[64]; while(is.read(bytes1)>0){ byte[]de=encrypt.decrypt(RSAEncrypt.privateKey,bytes1); bytes1=newbyte[64]; os.write(de,0,de.length); } os.close(); is.close(); System.out.println("writesuccess"); }catch(Exceptione){ e.printStackTrace(); } } /** *加密实现 **EncryptString.* * *@returnbyte[]加密后的字节数组 */ protectedbyte[]encrypt(RSAPublicKeypublicKey,byte[]obj){ if(publicKey!=null){ try{ Ciphercipher=Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE,publicKey); returncipher.doFinal(obj); }catch(Exceptione){ e.printStackTrace(); } } returnnull; } /** *解密实现 **Basicdecryptmethod* * *@returnbyte[]解密后的字节数组 */ protectedbyte[]decrypt(RSAPrivateKeyprivateKey,byte[]obj){ if(privateKey!=null){ try{ Ciphercipher=Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE,privateKey); returncipher.doFinal(obj); }catch(Exceptione){ e.printStackTrace(); } } returnnull; }}

⑺ java项目如何加密

Java基本的单向加密算法: 1.BASE64 严格地说,属于编码格式,而非加密算法2.MD5(Message Digest algorithm 5,信息摘要算法)3.SHA(Secure Hash Algorithm,安全散列算法)4.HMAC(Hash Message Authentication Code,散列消息鉴别码)按 照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.) 常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。 主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。 MD5 MD5 — message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都 是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文 件是否一致的。 HMAC HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证 等。

⑻ java加密的几种方式

基本的单向加密算法:

BASE64 严格地说,属于编码格式,而非加密算法

MD5(Message Digest algorithm 5,信息摘要算法)

SHA(Secure Hash Algorithm,安全散列算法)

HMAC(Hash Message Authentication Code,散列消息鉴别码)

复杂的对称加密(DES、PBE)、非对称加密算法:

DES(Data Encryption Standard,数据加密算法)

PBE(Password-based encryption,基于密码验证)

RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)

DH(Diffie-Hellman算法,密钥一致协议)

DSA(Digital Signature Algorithm,数字签名)

ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

代码参考:

/**

*BASE64加密

*

*@paramkey

*@return

*@throwsException

*/

(byte[]key)throwsException{

return(newBASE64Encoder()).encodeBuffer(key);

}

/**

*MD5加密

*

*@paramdata

*@return

*@throwsException

*/

publicstaticbyte[]encryptMD5(byte[]data)throwsException{

MessageDigestmd5=MessageDigest.getInstance(KEY_MD5);

md5.update(data);

returnmd5.digest();

}

/**

*SHA加密

*

*@paramdata

*@return

*@throwsException

*/

publicstaticbyte[]encryptSHA(byte[]data)throwsException{

MessageDigestsha=MessageDigest.getInstance(KEY_SHA);

sha.update(data);

returnsha.digest();

}

}

/**

*初始化HMAC密钥

*

*@return

*@throwsException

*/

publicstaticStringinitMacKey()throwsException{

KeyGeneratorkeyGenerator=KeyGenerator.getInstance(KEY_MAC);

SecretKeysecretKey=keyGenerator.generateKey();

returnencryptBASE64(secretKey.getEncoded());

}

/**

*HMAC加密

*

*@paramdata

*@paramkey

*@return

*@throwsException

*/

publicstaticbyte[]encryptHMAC(byte[]data,Stringkey)throwsException{

SecretKeysecretKey=newSecretKeySpec(decryptBASE64(key),KEY_MAC);

Macmac=Mac.getInstance(secretKey.getAlgorithm());

mac.init(secretKey);

returnmac.doFinal(data);

}


赞 (0)