今天在项目中接触到了用户密码加密,在之前做一些简单的小项目根本没有考虑到数据库的安全性。其实在真正的项目中就得需要对用户密码加密。才真正了解了一下用户密码的加密。
用户密码的加密技术有很多,加密级别也有很多。我今天接触了MD5技术和SHA技术
MD5

md5的作用原理就是把你输入你用户密码转化成32位乱的数字和字符。并且它是一个不可逆的字符串变换算法换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461

SHA的工作原理很像的。SHA 同样也是一个系列,它包括 SHA-1,SHA-224,SHA-256,SHA-384,和 SHA-512 等几种算法。其中,SHA-1,SHA-224 和 SHA-256 适用于长度不超过 2^64 二进制位的消息。SHA-384 和 SHA-512 适用于长度不超过 2^128 二进制位的消息。

package am.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
* 加密工具类
*
* md5加密出来的长度是32位
*
* sha加密出来的长度是40位
*
* @author am
*
*/
public class Encrypt {

/*** 加密* * @param inputText* @return*/
public static String e(String inputText) {return md5(inputText);
}/*** 二次加密,应该破解不了了吧?* * @param inputText* @return*/
public static String md5AndSha(String inputText) {return sha(md5(inputText));
}/*** md5加密* * @param inputText* @return*/
public static String md5(String inputText) {return encrypt(inputText, "md5");
}/*** sha加密* * @param inputText* @return*/
public static String sha(String inputText) {return encrypt(inputText, "sha-1");
}/*** md5或者sha-1加密* * @param inputText*            要加密的内容* @param algorithmName*            加密算法名称:md5或者sha-1,不区分大小写* @return*/
private static String encrypt(String inputText, String algorithmName) {if (inputText == null || "".equals(inputText.trim())) {throw new IllegalArgumentException("请输入要加密的内容");}if (algorithmName == null || "".equals(algorithmName.trim())) {algorithmName = "md5";}String encryptText = null;try {MessageDigest m = MessageDigest.getInstance(algorithmName);m.update(inputText.getBytes("UTF8"));byte s[] = m.digest();// m.digest(inputText.getBytes("UTF8"));return hex(s);} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return encryptText;
}/*** 返回十六进制字符串* * @param arr* @return*/
private static String hex(byte[] arr) {StringBuffer sb = new StringBuffer();for (int i = 0; i < arr.length; ++i) {sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3));}return sb.toString();
}

}

用户密码MD5和SHA加密相关推荐

  1. php mysql md5加密_php 用户密码MD5加密存入数据库问题//

    比如说用户注册后,后台给用户密码MD5加密了在存入数据库,用户在登入的时候输入的密码要与数据库保存的密码对比.我想问的是,用户登入时,后台要把密码用MD5加密后才能与数据库的密码比较吗? 对,确实如此 ...

  2. MD5或者SHA加密为32位字符的具体算法,值得学习,标准JAVA MD5方法

    import java.security.MessageDigest; //MD5或者SHA加密为32位字符的具体算法,值得学习 //MD5密码的明文可以通过网站查询:https://www.cmd5 ...

  3. AES、DES、RSA、base64、MD5、SHA加密

    对称加密: 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用.对称性加密也称为密钥加密. 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥 ...

  4. MD5和SHA加密实现

    @Testpublic void TestMD5AndSHA() throws NoSuchAlgorithmException {String MD5=Md5("123456") ...

  5. 密码MD5加盐加密----注册、校验、修改模块

    思路:     单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性. 此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证. 实现过程:      ...

  6. MD5,MD2,SHA加密的实现方式

    import java.security.MessageDigest;import javax.xml.bind.annotation.adapters.HexBinaryAdapter;public ...

  7. 用Python中的hashlib实现md5和sha加密

    文章目录 一.用 pandas 读取 Excel 数据 二.加密库 hashlib 三. pandas中的 map() 方法 四.数据加密工具 本文分享知识: pandas读取Excel数据 read ...

  8. java ldap添加用户名密码_java ldap用户密码md5加密

    在这里不过多介绍ldap,因为这样的文章特别多,这里就简单直接的记录这一个问题. 在springboot中通过引入spring-boot-starter-data-ldap,使用LdapTemplat ...

  9. java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)

    转载 转载自:http://www.tuicool.com/articles/nMNVVj Java 自带的数据加密类MessageDigest(MD5或SHA加密) 说明: 在网站中,为了保护网站会 ...

  10. golang pbkdf2加密存储用户密码

    概述 PBKDF2(Password-Based Key Derivation Function) 是一个用来导出密钥的函数,常用于生成加密的密码.原理是通过 password 和 salt 进行 h ...

最新文章

  1. ICLR2020放榜 34篇满分论文! 48篇orals,108篇spotlights,531篇poster
  2. 皮一皮:女友是有多么体贴...
  3. 在html语言中frame,html Frame、Iframe、Frameset 的区别
  4. org.apache.hadoop.hbase.ClockOutOfSyncException
  5. 通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行
  6. 不要被C++“自动生成”所蒙骗
  7. 5、overflow、hover
  8. Java2实用教程(第6版)实验指导与习题解答
  9. 金山词霸2005开启后导致桌面刷新的问题
  10. matlab信号处理——数据处理基础
  11. android系统解压zip文件,Android解压缩zip文件
  12. Spring和MyBatis框架整合的小案例
  13. Delphi TStringList DBRichEdit 删除尾部多余换页符
  14. iOS小技能:提取数字(文本框对粘贴内容进行手机号码提取)
  15. 关于举办“2020·中国边缘计算企业20强”榜单评选通知
  16. oracle异地容灾备份 英文6,异地容灾备份的方案.doc
  17. h3c linux驱动 wn612_产品技术-H3C WN612双频无线网卡(802.11n)-新华三集团-H3C
  18. 技术干货 | 人大金仓KFS基于分区索引的分片入库技术解析
  19. CSP 2021 复赛游记
  20. 简易方法制作GIF图(mp4转GIF)

热门文章

  1. HBuilderX 打包 vue 项目生成 apk
  2. 腾讯云CDN常见问题
  3. 计算机u盘设备无法启动不了怎么办,U盘无法弹出说正在占用怎么办?Windows无法停止设备解决方法...
  4. Java操作excel锁定
  5. 单车架的ANSYS有限元分析
  6. 使用浏览器监控页面变化,语音播报变化内容
  7. 美国大学计算机理论专业phd,揭秘美国大学计算机专业PHD申请难度
  8. 大数据服务器环境准备(三台服务)
  9. oracle ebs fa_category_books,FA有用的脚本 - Oracle EBS R12 - ITPUB论坛-中国专业的IT技术社区...
  10. 大规模行人检索—PRCV2020竞赛发布