java加密用户登录密码--不用MD5实现
来源:互联网 发布:ubuntu vim使用 编辑:程序博客网 时间:2024/04/30 07:33
看到一个用java实现的简单的加密,主要是可以进行相应的解密,方便实现,在实现一些小的项目的时候可以进行应用.主要的思路,首先给定一个字符串,随机取两个字符作为加密元,和输入的密码组成一个新的字符串,头两个字符作为种子,从要加密的字符串第一个字符开始要加密字符在给定字符串中的位置+前2个字符在在给定字符串中的位置+前1个字符在在给定字符串中的字符位置 然后%在给定字符串的长度,对应的位置的字符就是加密后的字符位置p表示加密字符的位置,i表示要加密字符的位.代码如下:
/**
* 加密的字符范围可以是特殊字符的
*/
public static final String alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz*-_";
/**
* 生成随机的加密字元
* @return
*/
public static final String randomSa(){
int length = alphabet.length();
java.util.Random r = new java.util.Random();
r.setSeed(System.currentTimeMillis());
return "" + alphabet.charAt(r.nextInt(length)) + alphabet.charAt(r.nextInt(length));
}
public static final String crypt(String src){
return crypt(randomSa(),src);
}
public static final String decrypt(String src){
if(src == null || src.length()< 2)
return null;
int j = src.length()-1;
int s = alphabet.length();
StringBuffer result = new StringBuffer();
for( int i = j;i >1; i--){
int p1 = alphabet.indexOf(src.charAt(i));
int p2 = alphabet.indexOf(src.toString().charAt(i-1));
int p3 = alphabet.indexOf(src.toString().charAt(i-2));
int k = 0;
/*解密字符减去前两个字符在字符表中的位置,得到正确字符在字符表中的位置*/
if(p1 < (p2+p3))
k = p1 + s -(p2 + p3)%s;
else
k = p1 - p2 - p3;
result.insert(0, alphabet.charAt(k%s));
}
return result.toString();
}
public static final String crypt(String salt, String original)
{
// wwb -- Should do some sanity checks: salt needs to be 2 chars, in alpha.
if(salt == null || original == null || original.equals(""))
return null;
while(salt.length() < 2)
salt += "A";
int j = original.length();
int s = alphabet.length();
StringBuffer result = new StringBuffer();
result.append(salt);
//int p = 3;
/*头两个字符作为种子,从要加密的字符串第一个字符开始
* 要加密字符在alphabet中的位置+前2个字符在alphabet中的位置+前1个字符在alphabe中的字符位置
* 然后%alphabet的长度,对应的位置的字符就是加密后的字符位置
* p表示加密字符的位置,i表示要加密字符的位置
* */
for(int i = 0,p=3;i < j;i++,p++){
int k = 0;
k = alphabet.indexOf(original.charAt(i)) + alphabet.indexOf(result.toString().charAt(p-3)) + alphabet.indexOf(result.toString().charAt(p-2));
k %= s;
result.append(alphabet.charAt(k));
}
return result.toString();
}
//调用测试
public static void main(String[] args) {
String s="testtest";
System.out.println("自有的加密:"+crypt(s));
System.out.println("jiemi======:"+decrypt("rJn3VLYai6"));
}
----
- java加密用户登录密码--不用MD5实现
- javascript+Java 实现MD5加密登录密码
- javascript+Java 实现MD5加密登录密码
- MD5 加密登录用户名称和密码
- java 登陆用户的密码MD5加密
- java实现字符串加密,登录密码加密
- 用java实现MD5密码加密
- JAVA简单实现MD5注册登录加密
- c# MD5 加密登录密码
- java 密码MD5加密
- java密码MD5加密
- java 密码MD5加密
- java MD5 密码加密
- JAVA用户注册登录使用MD5非对称加密解密
- java-java密码MD5加密
- MD5实现密码加密方法
- MD5加密登录密码的用
- 微信小程序登录密码MD5加密
- 对象数组【c++】
- 值类型 VS 引用类型 未完待续 (图)
- A. Vanya and Cards
- github上传自己的开源代码
- 数字证书原理
- java加密用户登录密码--不用MD5实现
- tyvj 火焰巨魔的惆怅
- tomcat部署与Context
- I2C设备驱动流程
- Win7时间日期格式YYYY/MM/DD改为YYYY-MM-DD
- VPATH
- 新浪云SAE使用WordPress搭建个人博客
- puppet 安装配置
- UITableView中的部分设置