简单的
用异或就可以了!
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实现加密与解密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)