1.简单的md5加密
/**
* 简单的md5加密
* */
public String md5s(String plainText) {
String str = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
str = buf.toString();
// //System.out.println("result: " + buf.toString());// 32位的加密
// //System.out.println("result: " + buf.toString().substring(8, 24));// 16位的加密
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
2.生成加密密码
/**
* 生成加密密码
*
* @param password
* 需要加密的字符串
*/
private int SALT_ORIGINAL_LEN=8;
public String digestPassword(String password) {
try {
SecureRandom random = new SecureRandom();
byte[] salt = new byte[SALT_ORIGINAL_LEN];
random.nextBytes(salt);
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(salt);
md.update(password.getBytes());
//System.out.println(salt);
byte[] digest = md.digest();
// BASE64Encoder encoder = new BASE64Encoder();
// return encoder.encode(salt) + encoder.encode(digest);
return Base64.encode(salt) + Base64.encode(digest);
} catch (NoSuchAlgorithmException ne) {
//System.out.println(ne.toString());
return null;
} catch (Exception e) {
//System.out.println(e.toString());
return null;
}
}
3.验证一个明文密码和一个密文密码是否相等
/**
* 验证一个明文密码和一个密文密码是否相等
*
* @param password
* 用户输入的明文密码,如:123456
* @param digest
* 目标密码,即数据库存放的已经加密的密码
* @return true:密码相同 false:密码不同
*/
private int SALT_ENCODED_LEN=12;
public boolean validatePassword(String password, String digest) {
boolean label = false;
try {
String salt_str = digest.substring(0, SALT_ENCODED_LEN);
String digest_str = digest.substring(SALT_ENCODED_LEN, digest.length());
// Base64 decoder = new BASE64Decoder();
byte[] salt = Base64.decode(salt_str);
byte[] digest_old = Base64.decode(digest_str);
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(salt);
md.update(password.getBytes());
byte[] digest_new = md.digest();
label = Arrays.equals(digest_old, digest_new);
} catch (NoSuchAlgorithmException ne) {
//System.out.println(ne.toString());
} catch (Exception e) {
//System.out.println(e.toString());
}
return label;
}
过程中base64报了一个错:Access restriction:The type JPEGCodec is not accessible due to restriction on required library D:\Java\jre7\lib\rt.jar(you's rt.jar address)
解决方法:
Project -> Properties -> libraries,
先 remove 掉 JRE System Library,然后再 Add Library 重新加入。
分享到:
相关推荐
总之,"proxool连接池用户名密码加密"是一个重要的安全实践,通过加密数据库连接的凭证,我们可以提高系统的安全性,保护数据免受未经授权的访问。正确地配置和使用这个功能,可以确保在享受数据库连接池带来的性能...
SYD8801 密码加密 配对SYD8801 密码加密 配对SYD8801 密码加密 配对SYD8801 密码加密 配对SYD8801 密码加密 配对
在IT行业中,密码的安全性是至关重要的,尤其是在网络服务中,如用户登录...总的来说,MD5在Java中的使用提供了一种简单的密码加密方式,但随着技术的发展,开发者应考虑使用更强大的加密策略来保护用户的敏感信息。
### AIX 密码加密方式详解 #### 一、AIX密码加密机制概述 AIX(Advanced Interactive Executive)是IBM公司开发的一种Unix操作系统,广泛应用于各种服务器环境。随着网络安全需求的不断提高,AIX系统提供了多种密码...
### Spring Boot 整合 Druid 实现数据库密码加密 #### 一、引言 在实际的生产环境中,数据库的安全性非常重要,尤其是数据库连接信息中的用户名和密码。为了防止这些敏感信息被泄露,通常需要采取措施来保护这些...
在SQLite中,为了保护数据库文件不被未经授权的访问,可以对.db文件设置密码加密。 **SQLite数据库加密** SQLite提供了一种内置的加密机制,允许我们为.db文件设置密码,确保数据在传输和存储时的安全。这种加密...
在实际开发中,除了密码加密,还应考虑使用HTTPS协议传输数据,以及在服务器端进行输入验证,防止SQL注入等攻击。同时,定期更新密码策略,限制密码的复杂性和生命周期,也是保护用户信息安全的重要措施。
标题"druid实现springmvc数据库连接的用户名和密码加密"指出,我们要讨论的是如何在Spring MVC项目中利用Druid连接池进行更高级别的安全性配置,即对数据库连接的敏感信息进行加密。这通常涉及以下步骤: 1. **密码...
仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...
密码加密存储方法 密码安全是信息安全的根本,直接存储密码到数据库是极不安全的,因为一旦别人入侵了你的机器或别人有机会用你的电脑,那数据库中的密码就非常容易被别人获得。因此,为了保证用户的密码安全,我们...
Tomcat 配置文件数据库密码加密,增加factory属性和修改context.xml文件中密码为密文,在lib文件中添加自定义的factory类 代码是jdk1.8版本,包含简单的加密类和http请求,如果使用简单的加密,不需要引用额外的lib...
### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...
本文将详细介绍两种密码加密的方法,以帮助开发者更好地理解和应用Spring Boot框架。 1. 为什么要加密密码 在2011年的CSDN用户数据泄露事件中,大量用户的明文密码被曝光,揭示了明文存储密码的严重风险。由于许多...
在这个项目中,我们看到的是使用HTML和JavaScript实现的凯撒密码加密与解密工具。HTML负责构建用户界面,而JavaScript则处理加密和解密的逻辑。这是一个很好的实践案例,可以帮助学习者理解基本的加密概念,并熟悉...
在Druid 1.0.9版本中,为了增强数据库连接的安全性,引入了密码加密的功能。这个功能允许开发者将数据库的用户名和密码加密,从而在配置文件中安全地存储这些敏感信息,避免明文密码泄露带来的风险。 首先,我们...
综上所述,易语言编写的QQ密码加密器为用户提供了便捷的密码加密方式,使得密码安全保护变得更加普及和容易。然而,无论使用何种工具,用户都应具备必要的安全意识,了解工具的工作原理,并采取正确的措施来保护自己...
为了使用这个"栅栏密码加密解密工具",你需要熟悉加密和解密的过程,以及可能遇到的挑战,如不均匀的文本长度和未知的栅栏数。通过实践和实验,你可以更好地掌握这种方法,并在需要时应用到实际的加密和解密任务中。...
在Caesar密码的压缩包文件中,"Caesar"可能是程序源代码文件的名字,里面包含了实现Caesar密码加密解密功能的Java源代码。通过阅读和理解这个源代码,我们可以学习到如何在实际编程中应用基础的加密解密原理,以及...
在标题提到的"rdp文件中的密码加密解密程序"是一种工具,专门设计用来处理RDP文件中的密码加密和解密。当RDP文件中包含`username:s:xxxx`和`password 51:b:xxxxx`这样的条目时,`xxxxx`部分就是经过加密的密码。这个...
因此,"web应用数据库密码加密"成为了一个必要的实践。 1. **Spring Boot/Spring 中的数据库密码加密** Spring Boot和Spring框架默认使用YAML或Properties文件来配置数据库连接信息,包括用户名和密码。为了保护...