MD5加密算法 字符串的处理

MD5

计算字符串或文件的特征码(数字指纹), 不可逆, 因为任何文件或字符串算出来的md5都是32位!
2、对MD5进行”加盐”处理, 增强安全性
MD5(password)->MD5(password + 用户昵称 + 用户id…)
怎样进行MD5加密呢:
先拿到MessageDigest 对象的实例; getinstance(“MD5”); (ctrl+Y 反向快捷键)
//StringBuffer
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。

例如,如果 z 引用一个当前内容为 “start” 的字符串缓冲区对象,则此方法调用 z.append(“le”) 会使字符串缓冲区包含 “startle”,而 z.insert(4, “le”) 将更改字符串缓冲区,使之包含 “starlet”。

与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

MD5加密算法:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {
  public static void main(String[] args) {
      String  s = "123456";

      try {
        MessageDigest instance = MessageDigest.getInstance("MD5");

           byte[] digest = instance.digest(s.getBytes());  //对字符串进行加密  返回字节数组,该字节数组由于被加密 
          StringBuilder  sb  = new StringBuilder();
           for (byte b : digest) {

               int i = b&0xff; //获取字节的低8位的有效值。
               String hexString = Integer.toHexString(i);  //将整数转换成16进制;
               System.out.println(hexString);
               if(hexString.length()<2){
                  hexString= "0"+hexString;
               }
               sb.append(hexString);

        }
           System.out.println("md5:"+sb.toString()); 
           System.out.println("md5的长度"+sb.toString().toString().length());  //md5 32位。

    } catch (NoSuchAlgorithmException e) {  
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}
}

封装好的Md5加密方法:

      public final static String MD5Encoder(String s) {
             try {
                 byte[] btInput = s.getBytes("utf-8");
                 MessageDigest mdInst = MessageDigest.getInstance("MD5");
                 mdInst.update(btInput);
                 byte[] md = mdInst.digest();
                 StringBuffer sb = new StringBuffer();
                 for (int i = 0; i < md.length; i++) {
                     int val = ((int) md[i]) & 0xff;// 0xff == 255
                     if (val < 16){
                         sb.append("0");
                     }
                    sb.append(Integer.toHexString(val));
                 }
                 return sb.toString();
             }catch (Exception e) {
                 return null;
             }
         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值