`
xph
  • 浏览: 73013 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

密码加密

md5 
阅读更多
  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 重新加入。
1
0
分享到:
评论
1 楼 sheep3600 2012-07-10  
apache的commons已经提供了加密算法,sha和md5,直接拿来用就好。

相关推荐

    proxool连接池用户名密码加密

    总之,"proxool连接池用户名密码加密"是一个重要的安全实践,通过加密数据库连接的凭证,我们可以提高系统的安全性,保护数据免受未经授权的访问。正确地配置和使用这个功能,可以确保在享受数据库连接池带来的性能...

    密码加密.zip

    SYD8801 密码加密 配对SYD8801 密码加密 配对SYD8801 密码加密 配对SYD8801 密码加密 配对SYD8801 密码加密 配对

    (Java密码加密)MD5方式

    在IT行业中,密码的安全性是至关重要的,尤其是在网络服务中,如用户登录...总的来说,MD5在Java中的使用提供了一种简单的密码加密方式,但随着技术的发展,开发者应考虑使用更强大的加密策略来保护用户的敏感信息。

    aix密码加密方式

    ### AIX 密码加密方式详解 #### 一、AIX密码加密机制概述 AIX(Advanced Interactive Executive)是IBM公司开发的一种Unix操作系统,广泛应用于各种服务器环境。随着网络安全需求的不断提高,AIX系统提供了多种密码...

    SpringBoot(七)SpringBoot整合Druid实现数据库密码加密.pdf

    ### Spring Boot 整合 Druid 实现数据库密码加密 #### 一、引言 在实际的生产环境中,数据库的安全性非常重要,尤其是数据库连接信息中的用户名和密码。为了防止这些敏感信息被泄露,通常需要采取措施来保护这些...

    sqlite对db文件进行设置密码加密

    在SQLite中,为了保护数据库文件不被未经授权的访问,可以对.db文件设置密码加密。 **SQLite数据库加密** SQLite提供了一种内置的加密机制,允许我们为.db文件设置密码,确保数据在传输和存储时的安全。这种加密...

    java中关于Springboot加密 md5加密,注册密码加密到数据库中的关键语句,md5加密语句.pdf

    在实际开发中,除了密码加密,还应考虑使用HTTPS协议传输数据,以及在服务器端进行输入验证,防止SQL注入等攻击。同时,定期更新密码策略,限制密码的复杂性和生命周期,也是保护用户信息安全的重要措施。

    druid实现springmvc数据库连接的用户名和密码加密

    标题"druid实现springmvc数据库连接的用户名和密码加密"指出,我们要讨论的是如何在Spring MVC项目中利用Druid连接池进行更高级别的安全性配置,即对数据库连接的敏感信息进行加密。这通常涉及以下步骤: 1. **密码...

    仿射密码加密与解密C++源程序

    仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...

    将用户的密码加密后再存入数据库的方法

    密码加密存储方法 密码安全是信息安全的根本,直接存储密码到数据库是极不安全的,因为一旦别人入侵了你的机器或别人有机会用你的电脑,那数据库中的密码就非常容易被别人获得。因此,为了保证用户的密码安全,我们...

    Tomcat 配置文件数据库密码加密

    Tomcat 配置文件数据库密码加密,增加factory属性和修改context.xml文件中密码为密文,在lib文件中添加自定义的factory类 代码是jdk1.8版本,包含简单的加密类和http请求,如果使用简单的加密,不需要引用额外的lib...

    tomcat_连接池数据库密码加密解密方法

    ### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...

    Spring Boot 中密码加密的两种方法

    本文将详细介绍两种密码加密的方法,以帮助开发者更好地理解和应用Spring Boot框架。 1. 为什么要加密密码 在2011年的CSDN用户数据泄露事件中,大量用户的明文密码被曝光,揭示了明文存储密码的严重风险。由于许多...

    凯撒密码加密解密

    在这个项目中,我们看到的是使用HTML和JavaScript实现的凯撒密码加密与解密工具。HTML负责构建用户界面,而JavaScript则处理加密和解密的逻辑。这是一个很好的实践案例,可以帮助学习者理解基本的加密概念,并熟悉...

    druid1.0.9密码加密

    在Druid 1.0.9版本中,为了增强数据库连接的安全性,引入了密码加密的功能。这个功能允许开发者将数据库的用户名和密码加密,从而在配置文件中安全地存储这些敏感信息,避免明文密码泄露带来的风险。 首先,我们...

    易语言编写的QQ密码加密器

    综上所述,易语言编写的QQ密码加密器为用户提供了便捷的密码加密方式,使得密码安全保护变得更加普及和容易。然而,无论使用何种工具,用户都应具备必要的安全意识,了解工具的工作原理,并采取正确的措施来保护自己...

    栅栏密码加密解密工具

    为了使用这个"栅栏密码加密解密工具",你需要熟悉加密和解密的过程,以及可能遇到的挑战,如不均匀的文本长度和未知的栅栏数。通过实践和实验,你可以更好地掌握这种方法,并在需要时应用到实际的加密和解密任务中。...

    Caesar密码加密解密

    在Caesar密码的压缩包文件中,"Caesar"可能是程序源代码文件的名字,里面包含了实现Caesar密码加密解密功能的Java源代码。通过阅读和理解这个源代码,我们可以学习到如何在实际编程中应用基础的加密解密原理,以及...

    rdp文件中的密码加密解密程序

    在标题提到的"rdp文件中的密码加密解密程序"是一种工具,专门设计用来处理RDP文件中的密码加密和解密。当RDP文件中包含`username:s:xxxx`和`password 51:b:xxxxx`这样的条目时,`xxxxx`部分就是经过加密的密码。这个...

    web应用数据库密码加密

    因此,"web应用数据库密码加密"成为了一个必要的实践。 1. **Spring Boot/Spring 中的数据库密码加密** Spring Boot和Spring框架默认使用YAML或Properties文件来配置数据库连接信息,包括用户名和密码。为了保护...

Global site tag (gtag.js) - Google Analytics