189 8069 5689

javasm3加密代码的简单介绍

用java写个文件加密的代码该怎么写

最简单的就一个FOR循环要加密的文件 再声明一个字符串 遍历 要加密的文件和字符串进行位与操作或之类操作

创新互联公司-专业网站定制、快速模板网站建设、高性价比吕梁网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式吕梁网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖吕梁地区。费用合理售后完善,十余年实体公司更值得信赖。

类似这样-

import java.util.Arrays;

public class Test {

public static void main(String[] args) {

String str = "hello";

byte[] strCode = str.getBytes();

System.out.println("原始信息字节码:"+Arrays.toString(strCode));

String key = "abcde";

byte[] keyCode = key.getBytes();

System.out.println("密钥字节码:"+Arrays.toString(keyCode));

byte[] finallyCode = new byte[strCode.length];

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

finallyCode[i] = (byte) (strCode[i] ^ keyCode[i]);

}

System.out.println("加密后的字节码:"+Arrays.toString(finallyCode));

System.out.println("加密后的字符串:"+new String(finallyCode));

//============解密

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

finallyCode[i] = (byte) (finallyCode[i] ^ keyCode[i]);

}

System.out.println("解密后的字节码:"+Arrays.toString(finallyCode));

System.out.println("解密后的字符串:"+new String(finallyCode));

}

}

求java文件加密代码

package com.happy.security.properties;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.security.Key;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import java.security.Security;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

public class DESEncryptUtil {

public static Key createKey() throws NoSuchAlgorithmException {//创建密钥

Security.insertProviderAt(new com.sun.crypto.provider.SunJCE(), 1);

KeyGenerator generator = KeyGenerator.getInstance("DES");

generator.init(new SecureRandom());

Key key = generator.generateKey();

return key;

}

public static Key getKey(InputStream is) {

try {

ObjectInputStream ois = new ObjectInputStream(is);

return (Key) ois.readObject();

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

private static byte[] doEncrypt(Key key, byte[] data) {//对数据进行加密?

try {

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, key);

byte[] raw = cipher.doFinal(data);

return raw;

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

public static InputStream doDecrypt(Key key, InputStream in) {//对数据进行解密?

try {

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, key);

ByteArrayOutputStream bout = new ByteArrayOutputStream();

byte[] tmpbuf = new byte[1024];

int count = 0;

while ((count = in.read(tmpbuf)) != -1) {

bout.write(tmpbuf, 0, count);

tmpbuf = new byte[1024];

}

in.close();

byte[] orgData = bout.toByteArray();

byte[] raw = cipher.doFinal(orgData);

ByteArrayInputStream bin = new ByteArrayInputStream(raw);

return bin;

} catch (Exception e){

e.printStackTrace();

throw new RuntimeException(e);

}

}

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

System.out.println("===================");

if (args.length == 2 args[0].equals("key")){

Key key = DESEncryptUtil.createKey();

ObjectOutputStream oos = new ObjectOutputStream(

new FileOutputStream(args[1]));

oos.writeObject(key);

oos.close();

System.out.println("成功生成密钥文件");

} else if (args.length == 3 args[0].equals("encrypt")){

File file = new File(args[1]);

FileInputStream in = new FileInputStream(file);

ByteArrayOutputStream bout = new ByteArrayOutputStream();

byte[] tmpbuf = new byte[1024];

int count = 0;

while ((count = in.read(tmpbuf)) != -1){

bout.write(tmpbuf, 0, count);

tmpbuf = new byte[1024];

}

in.close();

byte[] orgData = bout.toByteArray();

Key key = getKey(new FileInputStream(args[2]));

byte[] raw = DESEncryptUtil.doEncrypt(key, orgData);

file = new File(file.getParent() + "\\en_" + file.getName());

FileOutputStream out = new FileOutputStream(file);

out.write(raw);

out.close();

System.out.println("成功加密,加密文件位:"+file.getAbsolutePath());

} else if (args.length == 3 args[0].equals("decrypt")){//对文件进行解密

File file = new File(args[1]);

FileInputStream fis = new FileInputStream(file);

Key key = getKey(new FileInputStream(args[2]));

InputStream raw = DESEncryptUtil.doDecrypt(key, fis);

ByteArrayOutputStream bout = new ByteArrayOutputStream();

byte[] tmpbuf = new byte[1024];

int count = 0;

while ((count = raw.read(tmpbuf)) != -1){

bout.write(tmpbuf, 0, count);

tmpbuf = new byte[1024];

}

raw.close();

byte[] orgData = bout.toByteArray();

file = new File(file.getParent() + "\\rs_" + file.getName());

FileOutputStream fos = new FileOutputStream(file);

fos.write(orgData);

System.out.println("成功解密,解密文件位:"+file.getAbsolutePath());

}else if(args.length==1 args[0].equals("-h")) {

System.out.println("\t文件加密解密\n");

System.out.println

java加密解密代码

package com.cube.limail.util;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;/**

* 加密解密类

*/

public class Eryptogram

{

private static String Algorithm ="DES";

private String key="CB7A92E3D3491964";

//定义 加密算法,可用 DES,DESede,Blowfish

static boolean debug = false ;

/**

* 构造子注解.

*/

public Eryptogram ()

{

} /**

* 生成密钥

* @return byte[] 返回生成的密钥

* @throws exception 扔出异常.

*/

public static byte [] getSecretKey () throws Exception

{

KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );

SecretKey deskey = keygen.generateKey ();

System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));

if (debug ) System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));

return deskey.getEncoded ();

} /**

* 将指定的数据根据提供的密钥进行加密

* @param input 需要加密的数据

* @param key 密钥

* @return byte[] 加密后的数据

* @throws Exception

*/

public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception

{

SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );

if (debug )

{

System.out.println ("加密前的二进串:"+byte2hex (input ));

System.out.println ("加密前的字符串:"+new String (input ));

} Cipher c1 = Cipher.getInstance (Algorithm );

c1.init (Cipher.ENCRYPT_MODE ,deskey );

byte [] cipherByte =c1.doFinal (input );

if (debug ) System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));

return cipherByte ;

} /**

* 将给定的已加密的数据通过指定的密钥进行解密

* @param input 待解密的数据

* @param key 密钥

* @return byte[] 解密后的数据

* @throws Exception

*/

public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception

{

SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );

if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));

Cipher c1 = Cipher.getInstance (Algorithm );

c1.init (Cipher.DECRYPT_MODE ,deskey );

byte [] clearByte =c1.doFinal (input );

if (debug )

{

System.out.println ("解密后的二进串:"+byte2hex (clearByte ));

System.out.println ("解密后的字符串:"+(new String (clearByte )));

} return clearByte ;

} /**

* 字节码转换成16进制字符串

* @param byte[] b 输入要转换的字节码

* @return String 返回转换后的16进制字符串

*/

public static String byte2hex (byte [] b )

{

String hs ="";

String stmp ="";

for (int n =0 ;n b.length ;n ++)

{

stmp =(java.lang.Integer.toHexString (b [n ] 0XFF ));

if (stmp.length ()==1 ) hs =hs +"0"+stmp ;

else hs =hs +stmp ;

if (n b.length -1 ) hs =hs +":";

} return hs.toUpperCase ();

}

/**

* 字符串转成字节数组.

* @param hex 要转化的字符串.

* @return byte[] 返回转化后的字符串.

*/

public static byte[] hexStringToByte(String hex) {

int len = (hex.length() / 2);

byte[] result = new byte[len];

char[] achar = hex.toCharArray();

for (int i = 0; i len; i++) {

int pos = i * 2;

result[i] = (byte) (toByte(achar[pos]) 4 | toByte(achar[pos + 1]));

}

return result;

}

private static byte toByte(char c) {

byte b = (byte) "0123456789ABCDEF".indexOf(c);

return b;

}

/**

* 字节数组转成字符串.

* @param String 要转化的字符串.

* @return 返回转化后的字节数组.

*/

public static final String bytesToHexString(byte[] bArray) {

StringBuffer sb = new StringBuffer(bArray.length);

String sTemp;

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

sTemp = Integer.toHexString(0xFF bArray[i]);

if (sTemp.length() 2)

sb.append(0);

sb.append(sTemp.toUpperCase());

}

return sb.toString();

}

/**

* 从数据库中获取密钥.

* @param deptid 企业id.

* @return 要返回的字节数组.

* @throws Exception 可能抛出的异常.

*/

public static byte[] getSecretKey(long deptid) throws Exception {

byte[] key=null;

String value=null;

//CommDao dao=new CommDao();

// List list=dao.getRecordList("from Key k where k.deptid="+deptid);

//if(list.size()0){

//value=((com.csc.sale.bean.Key)list.get(0)).getKey();

value = "CB7A92E3D3491964";

key=hexStringToByte(value);

//}

if (debug)

System.out.println("密钥:" + value);

return key;

}

public String encryptData2(String data) {

String en = null;

try {

byte[] key=hexStringToByte(this.key);

en = bytesToHexString(encryptData(data.getBytes(),key));

} catch (Exception e) {

e.printStackTrace();

}

return en;

}

public String decryptData2(String data) {

String de = null;

try {

byte[] key=hexStringToByte(this.key);

de = new String(decryptData(hexStringToByte(data),key));

} catch (Exception e) {

e.printStackTrace();

}

return de;

}

} 加密使用: byte[] key=Eryptogram.getSecretKey(deptid); //获得钥匙(字节数组)

byte[] tmp=Eryptogram.encryptData(password.getBytes(), key); //传入密码和钥匙,获得加密后的字节数组的密码

password=Eryptogram.bytesToHexString(tmp); //将字节数组转化为字符串,获得加密后的字符串密码解密与之差不多


分享文章:javasm3加密代码的简单介绍
本文网址:http://cdxtjz.cn/article/heidcs.html

其他资讯