简单加密解密:(要加密的是一个int型的值),不知道这样代码有没有破绽
加密原理:先将要加密的数字乘于一个数值,
将得到的值 每一位转换成对应的英文字母
例{0,1,2,3,4,5,6,7,8,9}
对应固定的十个字母
{a,d,f,h,y,T,v,H,T,z}
将要乘的值和乘后的位数保存在前三位
加密后的值即为乘数,位数乘后的值,随即的值连接成
保证加密后的值为一个固定的长度。
解密算法:
public static String zhuanhuan(String cardno){
char[] cardnos=cardno.trim().toCharArray();
String[] mishi={"i","c","V","K","y","o","N","m","j","l"};
String newCardno="";
for(int j=0;j<cardnos.length;j++){
for(int i=0;i<mishi.length;i++){
if(String.valueOf(cardnos[j]).equals(mishi[i])){
newCardno+=Integer.valueOf(i).toString();
}
}
}
return newCardno;
}
public static long jiemi(String newCardno){
long jiemizhi=0;
char[] newCardnos=newCardno.toCharArray();
int weishu=0;
int chengshu=0;
for(int i=0;i<newCardnos.length;i++){
String c1=Character.valueOf(newCardnos[0]).toString();
String c2=Character.valueOf(newCardnos[1]).toString();
String c3=Character.valueOf(newCardnos[2]).toString();
StringBuffer sb=new StringBuffer(c2);
//获得第二位第三位拼成的位数
weishu=Integer.valueOf(sb.append(c3).toString()).intValue();
//第一位传来的乘数
chengshu=Integer.valueOf(c1).intValue();
}
//获得乘数之后的值
String afercheng=newCardno.substring(3,3+weishu);
//获得解密后的密码
jiemizhi = Long.valueOf(afercheng).longValue()/chengshu;
return jiemizhi;
}
public static int decryption(String cardno){
String afterTrans=JiaMi.zhuanhuan(cardno);
long mima =JiaMi.jiemi(afterTrans);
int beforeCardno=Long.valueOf(mima).intValue();
return beforeCardno;
}
加密原理:先将要加密的数字乘于一个数值,
将得到的值 每一位转换成对应的英文字母
例{0,1,2,3,4,5,6,7,8,9}
对应固定的十个字母
{a,d,f,h,y,T,v,H,T,z}
将要乘的值和乘后的位数保存在前三位
加密后的值即为乘数,位数乘后的值,随即的值连接成
保证加密后的值为一个固定的长度。
解密算法:
public static String zhuanhuan(String cardno){
char[] cardnos=cardno.trim().toCharArray();
String[] mishi={"i","c","V","K","y","o","N","m","j","l"};
String newCardno="";
for(int j=0;j<cardnos.length;j++){
for(int i=0;i<mishi.length;i++){
if(String.valueOf(cardnos[j]).equals(mishi[i])){
newCardno+=Integer.valueOf(i).toString();
}
}
}
return newCardno;
}
public static long jiemi(String newCardno){
long jiemizhi=0;
char[] newCardnos=newCardno.toCharArray();
int weishu=0;
int chengshu=0;
for(int i=0;i<newCardnos.length;i++){
String c1=Character.valueOf(newCardnos[0]).toString();
String c2=Character.valueOf(newCardnos[1]).toString();
String c3=Character.valueOf(newCardnos[2]).toString();
StringBuffer sb=new StringBuffer(c2);
//获得第二位第三位拼成的位数
weishu=Integer.valueOf(sb.append(c3).toString()).intValue();
//第一位传来的乘数
chengshu=Integer.valueOf(c1).intValue();
}
//获得乘数之后的值
String afercheng=newCardno.substring(3,3+weishu);
//获得解密后的密码
jiemizhi = Long.valueOf(afercheng).longValue()/chengshu;
return jiemizhi;
}
public static int decryption(String cardno){
String afterTrans=JiaMi.zhuanhuan(cardno);
long mima =JiaMi.jiemi(afterTrans);
int beforeCardno=Long.valueOf(mima).intValue();
return beforeCardno;
}