用JAVA设计一个简单的加密、解密算法,用该算法来实现对数据的加密、解密

用JAVA设计一个简单的加密、解密算法,用该算法来实现对数据的加密、解密,第1张

简单的

用异或就可以了!

import javautilScanner;

public class 加密

{

private static Scanner sc=new Scanner(Systemin);

public static void main(String[] Args)

{

Systemoutprintln("\n\t\t================字符串加密演示=====================\n");

init();

}

//初始化!

private static void init()

{

for(;;)

{

char[] arr=input();

jiaMi(arr,20140908);

jiaMi(20140908,arr);

}

}

//键盘录取!

private static char[] input()

{

String s=scnextLine();

int a=slength();

char[] arr= new char[a];

//char[] arr=stoCharArray();

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

{

arr[i]=scharAt(i);

}

return arr;

}

//加密!!

private static void jiaMi(char[] arr,int a)

{

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

{

arr[i]=((char)(arr[i]^a));

}

Systemoutprintln("加密完成!");

print(arr);

}

//解密!!

private static void jiaMi(int a,char[] arr)

{

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

{

arr[i]=((char)(arr[i]^a));

}

Systemoutprintln("解密完成");

print(arr);

}

//打印!!

private static void print(char[] arr)

{

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

{

Systemoutprint(arr[i]);

}

Systemoutprintln("\n=========================\n");

}

}

通过Java本身提供的JDBC连结

需要导入sqlitejdbc-v033-nestedjar文件

private static String url="orgsqliteJDBC";

private static String dri="jdbc:sqlite:/D:testdb文件对应的目录路径(不能包含中文)";

public static Connection getConn(String table) throws Exception{

ClassforName(url);

Connection conn = DriverManager

getConnection(dri+table);

return conn;

}

通常比较简单的加密方法就是你把文本文件加载读取以后,得到的每一个char加上一个固定的整数,然后再保存,这样内容就看不懂了。

再读取以后,把每一个char减去固定的整数,然后保存,就还原回来了。

这种方法是最最简单的加密方式,不需要使用任何的加密算法。

package comcubelimailutil;

import javaxcryptoCipher;

import javaxcryptoKeyGenerator;

import javaxcryptoSecretKey;/

加密解密类

/

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 = KeyGeneratorgetInstance (Algorithm );

SecretKey deskey = keygengenerateKey ();

Systemoutprintln ("生成密钥:"+bytesToHexString (deskeygetEncoded ()));

if (debug ) Systemoutprintln ("生成密钥:"+bytesToHexString (deskeygetEncoded ()));

return deskeygetEncoded ();

} /

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

@param input 需要加密的数据

@param key 密钥

@return byte[] 加密后的数据

@throws Exception

/

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

{

SecretKey deskey = new javaxcryptospecSecretKeySpec (key ,Algorithm );

if (debug )

{

Systemoutprintln ("加密前的二进串:"+byte2hex (input ));

Systemoutprintln ("加密前的字符串:"+new String (input ));

} Cipher c1 = CiphergetInstance (Algorithm );

c1init (CipherENCRYPT_MODE ,deskey );

byte [] cipherByte =c1doFinal (input );

if (debug ) Systemoutprintln ("加密后的二进串:"+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 javaxcryptospecSecretKeySpec (key ,Algorithm );

if (debug ) Systemoutprintln ("解密前的信息:"+byte2hex (input ));

Cipher c1 = CiphergetInstance (Algorithm );

c1init (CipherDECRYPT_MODE ,deskey );

byte [] clearByte =c1doFinal (input );

if (debug )

{

Systemoutprintln ("解密后的二进串:"+byte2hex (clearByte ));

Systemoutprintln ("解密后的字符串:"+(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 <blength ;n ++)

{

stmp =(javalangIntegertoHexString (b [n ] & 0XFF ));

if (stmplength ()==1 ) hs =hs +"0"+stmp ;

else hs =hs +stmp ;

if (n <blength -1 ) hs =hs +":";

} return hstoUpperCase ();

}

/

字符串转成字节数组

@param hex 要转化的字符串

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

/

public static byte[] hexStringToByte(String hex) {

int len = (hexlength() / 2);

byte[] result = new byte[len];

char[] achar = hextoCharArray();

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(bArraylength);

String sTemp;

for (int i = 0; i < bArraylength; i++) {

sTemp = IntegertoHexString(0xFF & bArray[i]);

if (sTemplength() < 2)

sbappend(0);

sbappend(sTemptoUpperCase());

}

return sbtoString();

}

/

从数据库中获取密钥

@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=daogetRecordList("from Key k where kdeptid="+deptid);

//if(listsize()>0){

//value=((comcscsalebeanKey)listget(0))getKey();

value = "CB7A92E3D3491964";

key=hexStringToByte(value);

//}

if (debug)

Systemoutprintln("密钥:" + value);

return key;

}

public String encryptData2(String data) {

String en = null;

try {

byte[] key=hexStringToByte(thiskey);

en = bytesToHexString(encryptData(datagetBytes(),key));

} catch (Exception e) {

eprintStackTrace();

}

return en;

}

public String decryptData2(String data) {

String de = null;

try {

byte[] key=hexStringToByte(thiskey);

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

} catch (Exception e) {

eprintStackTrace();

}

return de;

}

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

byte[] tmp=EryptogramencryptData(passwordgetBytes(), key); //传入密码和钥匙,获得加密后的字节数组的密码

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

以上就是关于用JAVA设计一个简单的加密、解密算法,用该算法来实现对数据的加密、解密全部的内容,包括:用JAVA设计一个简单的加密、解密算法,用该算法来实现对数据的加密、解密、java连接加密的sqllite数据库你怎么解决的、如何用java实现加密与解密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/9529145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存