方法一:
public class SHAEncrypt {
static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
public static String encryptPwd(String password){
MessageDigest ssha = null;
try {
ssha = MessageDigest.getInstance("SHA");
ssha.update(password.getBytes());
} catch (NoSuchAlgorithmException e) {
Log.error("None of the encryption algorithm(没有该加密算法)");
e.printStackTrace();
}
return ssha.digest().toString();
}
public static String encryptPwd(String password, String algorithm) throws Exception{
try {
MessageDigest ssha = MessageDigest.getInstance(algorithm);
ssha.update(password.getBytes());
byte[] bytes = ssha.digest();
int j = bytes.length ;
char str[] = new char[j * 2];
int k = 0 ;
for (int i = 0; i < j; i++) {
byte byte0 = bytes[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf ];
str[k++] = hexDigits[byte0 & 0xf ];
}
return new String(str);
} catch (NoSuchAlgorithmException e) {
Log.error("None of the encryption algorithm(没有该加密算法)");
e.printStackTrace();
throw new Exception("encryptPwd failed");
}
}
/**
* MD5二次加密
*
* @date 2013-1-4 下午03:32:54
* @param password
* @return
* @throws Exception
* @return String
*/
public static String MD5SecondaryEncrypt(String password) throws Exception{
return encryptPwd(encryptPwd(password, "MD5"),"MD5");
}
/**
* 根据密码明文和密码类型获取密码
*
* @date 2013-1-4 下午03:12:10
* @param passType 0=明文, 1=MD5, 2=crypt, 3=ssha ,4=MD5*3,5=LDAP, 6=external WEB
* @return
* @return String
*/
public static String getPwdByPassType( String password, int passType){
String encryptPwd = null;
try {
switch (passType) {
case 0:
encryptPwd = password;
break;
case 1:
encryptPwd = encryptPwd(password, "MD5");
break;
case 2:
encryptPwd = password;
break;
case 3:
encryptPwd = encryptPwd(password, "MD5");
break;
case 4:
encryptPwd = MD5SecondaryEncrypt(password);
break;
case 5:
encryptPwd = password;
break;
default:
break;
}
} catch (Exception e) {
Log.error("getPwdByPassType failed:"+e);
e.printStackTrace();
}
return encryptPwd;
}
public static void main(String[] args) {
try {
System.out.println(SHAEncrypt.encryptPwd("123", "MD5"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法一:原理一样
import java.security.MessageDigest;
/**
* 对密码进行加密和验证的类
*/
public class CipherUtil {
//十六进制下数字到字符的映射数组
private final static String[] hexDigits = {"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
/** * 把inputString加密 */
public static String generatePassword(String inputString){
return encodeByMD5(inputString);
}
/**
* 验证输入的密码是否正确
* @param password 加密后的密码
* @param inputString 输入的字符串
* @return 验证结果,TRUE:正确 FALSE:错误
*/
public static boolean validatePassword(String password, String inputString){
if(password.equals(encodeByMD5(inputString))){
return true;
} else{
return false;
}
}
/** 对字符串进行MD5加密 */
private static String encodeByMD5(String originString){
if (originString != null){
try{
//创建具有指定算法名称的信息摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
byte[] results = md.digest(originString.getBytes());
//将得到的字节数组变成字符串返回
String resultString = byteArrayToHexString(results);
return resultString.toUpperCase();
} catch(Exception ex){
ex.printStackTrace();
}
}
return null;
}
/**
* 转换字节数组为十六进制字符串
* @param 字节数组
* @return 十六进制字符串
*/
private static String byteArrayToHexString(byte[] b){
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++){
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
/** 将一个字节转化成十六进制形式的字符串 */
private static String byteToHexString(byte b){
int n = b;
if (n < 0)
n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static void main(String[] args) {
String pwd1="123";
String pwd2="";
System.out.println("未加密的密码:"+pwd1);
//将123加密
pwd2 = CipherUtil.generatePassword(pwd1);
System.out.println("加密后的密码:"+pwd2);
System.out.print("验证密码是否下确:");
if(CipherUtil.validatePassword(pwd2, pwd1)) {
System.out.println("正确");
}
else {
System.out.println("错误");
}
}
}
分享到:
相关推荐
md5 密码加密 绝对不会被反编译。。适合一般的文件密码加密。。。
在"MD5密码加密文档"中,MD5被用于对密码进行加密处理。通常,我们不直接存储用户的明文密码,而是将其通过MD5或其他哈希函数转化为哈希值,存储这个哈希值。这样,即使数据库被泄露,攻击者也无法直接获取到用户的...
在你下载的"MD5密码加密技术.zip"文件中,可能包含了上述Java代码示例,以及如何将这些加密后的MD5值与MySQL数据库进行交互的示例。你可以直接运行这些代码,以理解和应用MD5密码加密技术。通过学习和实践这个代码,...
java MD5密码加密.
MD5 密码加密方式
这种转换过程是不可逆的,即不能通过MD5值恢复原始数据,因此常用于数据完整性校验和密码存储。 MD5的基本原理是通过一系列的数学运算,包括位操作、异或、加法等,将输入的数据“混合”成一个固定的长度。这些运算...
### crypto-js 库在前端开发中的应用:MD5与DES加密技术详解 #### 一、前言 在当今数字化时代,信息安全变得尤为重要。无论是保护用户的个人信息还是确保数据传输的安全性,加密技术都扮演着至关重要的角色。在...
这是一个js文件,只要在页面上添加javascript引就可以使用。使用该文件,可在javascript或jquery中把密码通过md5的加密进行加密,安全,简单,方便,同时可以进行关于md5的其他操作
//md5加密 在项目中加入本文附带的ContorString文件,在需要加密的页面引用System.Web.Security,并写入以下代码: " ContorString md5=new ContorString(); string loginPwd = md5.MDString(this.TextBox2.Text.Trim...
MD5的主要用途包括但不限于:文件完整性检查、密码加密存储、数字签名等。 #### 二、MD5在C#中的应用 在C#开发中,MD5主要用于密码的安全存储以及数据校验等方面。通过将原始数据经过MD5算法处理后得到一个固定长度...
在实际开发中,除了密码加密,还应考虑使用HTTPS协议传输数据,以及在服务器端进行输入验证,防止SQL注入等攻击。同时,定期更新密码策略,限制密码的复杂性和生命周期,也是保护用户信息安全的重要措施。
MD5加密是一种常用的密码学哈希函数,用于确保数据的完整性和_authentication。MD5算法是RSA Data Security公司在1992年发布的,用于生成一个128位的哈希值。MD5加密广泛应用于各种领域,包括数据存储、网络传输和...
描述中提到“程序完全可以运行”,暗示存在一个实现MD5密码加密的代码示例。在实际应用中,通常会使用编程语言的库函数来完成MD5哈希计算,例如Python的`hashlib`库、Java的`java.security.MessageDigest`类等。 ...
md5加密类,可以通过md5加密保证密码的安全性
附:如果遇到MD5加密文件,而又不知道的密码的,请在数据库中换上这组加密的数据。 admin---16位加密---7a57a5a743894a0e admin---32位加密---21232f297a57a5a743894a0e4a801fc3 admin---40位加密---7a57a5a743894...
在Delphi编程环境中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,常用于密码加密和数据完整性校验。MD5算法能够将任意长度的数据转换为固定长度的128位(16字节)摘要,通常以32位十六进制数的...
综合以上信息,我们可以得出,这个压缩包提供了一个完整的解决方案,包括了MD5加密所需的所有组件,从底层算法实现到用户界面和交互功能,用户可以方便地对大量字符密码进行快速且安全的MD5加密。这对于开发者来说是...
这是我自己写的一个Spring boot项目的登录源码,里面登录用到了动态验证码,Mybatis 逆向生成工具,密码使用Base64加密前端,后端解密以后,再用MD5加密到数据库比对。还有资源页面的增删改查和页面分页:...
批量MD5加密工具,如"苏苏MD5批量加密工具.exe",是为了方便用户处理大量文件的MD5计算而设计的。这样的工具通常具有以下功能: 1. **多文件处理**:一次可以处理多个文件,节省了逐个手动计算的时间。 2. **快速...
在IT行业中,密码的安全性是至关重要的,尤其是在网络服务中,如用户登录...总的来说,MD5在Java中的使用提供了一种简单的密码加密方式,但随着技术的发展,开发者应考虑使用更强大的加密策略来保护用户的敏感信息。