我们在Web开发中,经常要保证密码的安全性,那么怎么对密码进行处理了?首先得进行加密吧!下面我介绍下Java 提供的SHA加密方式;

SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。然而人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-384 和 SHA-512 (这些有时候也被称做 SHA-2)。

package com.chinadatapay.util;import java.security.MessageDigest;/*** SHA 加密算法* @author DELL**/public class SHAencrypt  {/** * 定义加密方式 */  private final static String KEY_SHA = "SHA";  private final static String KEY_SHA1 = "SHA-1";/** * 全局数组 */  private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",  "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };  /** * 构造函数 */  public SHAencrypt() {  }  /** * SHA 加密 * @param data 需要加密的字节数组 * @return 加密之后的字节数组 * @throws Exception */  public static byte[] encryptSHA(byte[] data) throws Exception {  // 创建具有指定算法名称的信息摘要
//        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);  MessageDigest sha = MessageDigest.getInstance(KEY_SHA1);  // 使用指定的字节数组对摘要进行最后更新  sha.update(data);  // 完成摘要计算并返回  return sha.digest();  }  /** * SHA 加密 * @param data 需要加密的字符串 * @return 加密之后的字符串 * @throws Exception */  public static String encryptSHA(String data) throws Exception {  // 验证传入的字符串  if (data == null || data.equals("")) {  return "";  }  // 创建具有指定算法名称的信息摘要  MessageDigest sha = MessageDigest.getInstance(KEY_SHA);  // 使用指定的字节数组对摘要进行最后更新  sha.update(data.getBytes());  // 完成摘要计算  byte[] bytes = sha.digest();  // 将得到的字节数组变成字符串返回  return byteArrayToHexString(bytes);  }  /** * 将一个字节转化成十六进制形式的字符串 * @param b 字节数组 * @return 字符串 */  private static String byteToHexString(byte b) {  int ret = b;  //System.out.println("ret = " + ret);  if (ret < 0) {  ret += 256;  }  int m = ret / 16;  int n = ret % 16;  return hexDigits[m] + hexDigits[n];  }  /** * 转换字节数组为十六进制字符串 * @param bytes 字节数组 * @return 十六进制字符串 */  private static String byteArrayToHexString(byte[] bytes) {  StringBuffer sb = new StringBuffer();  for (int i = 0; i < bytes.length; i++) {  sb.append(byteToHexString(bytes[i]));  }  return sb.toString();  }
}

添加一个用户,调用方法对密码进行加密操作,登陆的时候,对登陆的用户输入的密码进行加密,然后通过数据中的密码密码与用户登陆输入的密码进行比较;

比如输入密码:Yan230Kd

String encryptSHA = SahTest.encryptSHA("Yan230Kd");

加密后的密码:1dc3a28e6949b07918f3613fa3a2c9342c4e79f4

如何使用Java对密码进行加密 Java Sah加密方式帮你实现加密相关推荐

  1. java打开密码pdf,在Java中使用密码解密PDF文档

    在Java中使用密码解密PDF文档 文档加密是确保企业与其外部客户之间安全地传递信息的最常用方法之一.所有PDF文件都提供了加密功能,可确保任何试图拦截信息的人都可以在没有密码的情况下打开它,密码应在 ...

  2. java登陆密码验证失败,java用户名密码验证示例代码分享

    类:NameII    权限:public 方法:main    权限:public 参数:name,password,denglu,i; 参数介绍: name,数据类型 String ,用来存储一个 ...

  3. luks linux 加密磁盘,用luks方式对磁盘进行加密以及加密磁盘的自动挂载

    1.关于luks加密 LUKS(Linux Unified Key Setup)为Linux硬盘分区加密提供了一种标准,它不仅能通用于不同的 Linux发行版本,还支持多用户/口令.因为它的加密密钥独 ...

  4. swf 加密:采用byteArray 方式,增加字符串加密,可加密大文件swf

    http://hi.baidu.com/lq01/blog/item/4aade4fe9232913d5c60081f.html Posted on 三月 2nd, 2010 admin No com ...

  5. 【转载】swf 加密:采用byteArray 方式,增加字符串加密,可加密大文件swf

    转载自:http://www.91face.com/blog/?p=206 先把工具传上来先. http://www.91face.com/swf/entryptSwf.swf 解密的fla:http ...

  6. 应用JAVA进行密码加密的一种算法

    应用JAVA进行密码加密的一种算法 发表于<河北科技大学学报>(2007-7 Vol.28,P122) 摘要:在这篇文章中将要介绍一种简单的密码不可逆加密算法的实现,代码采用的是java语 ...

  7. 密码加密 加盐 Java PBKDF2 密码哈希代码

    如果你是Web开发者,你很可能需要开发一个用户账户系统.这个系统最重要的方面,就是怎样保护用户的密码.存放帐号的数据库经常成为入侵的目标,所以你必须做点什么来保护密码,以防网站被攻破时发生危险.最好的 ...

  8. Java AES密码盐加密

    Java AES密码盐加密 import lombok.extern.slf4j.Slf4j; import org.apache.tomcat.util.codec.binary.Base64;im ...

  9. 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件签名 )

    文章目录 一.生成 jks 文件 二.签名命令 三.执行结果 四.处理 Unsupported major.minor version 52.0 错误 参考博客 : [Android 安全]DEX 加 ...

最新文章

  1. 什么是数据结构,为什么我们需要数据结构?
  2. 日文 LaTeX 系统介绍 - 最简示例
  3. [Ubuntu] ThinkPad T410i linux下如何调节亮度
  4. int signed in mysql_【转】mysql 中int类型字段unsigned和signed的区别
  5. linux手动安装unzip_centos7离线安装unzip和zip
  6. ubuntu 上 nvidia-smi 没显示所有的GPU
  7. opencv图像像素操作方法
  8. 计算领域高质量科技期刊分级目录
  9. discuz代码阅读-核心类-class_core.php
  10. 华为手机安装GMS框架
  11. AspNetPager常用属性及用法 / URLRewrite伪静态与AspNetPager分页控件的结合
  12. SpringBoot重点详解--事件监听
  13. 当路町-网络下载应用系列之二-破解网页内容无法复制
  14. mysql 批量查找 in_在数据库查询时解决大量in 关键字的方法
  15. 新年金市上行动力堪忧 美债收益率大幅上涨
  16. 边缘计算开源框架EdgeXFoundry的部署应用开发(三)设备服务开发
  17. linux 查看系统日志
  18. ChatGPT的各种骚操作
  19. Solidity之事件
  20. 安卓启动中的PARTUUID

热门文章

  1. seaborn使用boxplot函数进行箱图可视化(使用色彩调色板自定义设置箱图的颜色、sns.set_palette全局设置palette参数、自定义全局调色板色彩)
  2. python例子高考志愿填报系统入口_江苏2018年高考模拟志愿填报入口(官方)
  3. 英雄联盟3d照片脚本
  4. PX4仿真时,如何在Gazebo下添加物理环境
  5. 后GPT 3.0时代,主流大模型技术精要详解,走向AGI之路的大门已开
  6. 标题:子网掩码划分,交换机,SecureCRT命令行
  7. HTML期末学生作业 HTML+CSS+JavaScript仿猫眼电影在线网站 Hbuilder网页制作
  8. linux下测试网速
  9. 小米AI实验室入选《麻省理工科技评论》中国“2021人工智能创新研究院”
  10. 什么是udp攻击?udp攻击的基本原理是什么