Java 实现字符串SHA1加密方法

目录
  • Java 字符串SHA1加密
    • 导入类
    • 定义函数
  • javaSHA1实现加密解密
    • 封装一个方法用于加密
    • 主函数测试

Java 字符串SHA1加密

导入类

import java.security.MessageDigest;

定义函数

private String toUserPwd(final String password) {
  try {
   if (password == null) {
    return null;
   }
   final MessageDigest messageDigest = MessageDigest.getInstance("SHA");
   final byte[] digests = messageDigest.digest(password.getBytes());
   final StringBuilder stringBuilder = new StringBuilder();
   for (int i = 0; i < digests.length; i++) {
    int halfbyte = (digests[i] >>> 4) & 0x0F;
    for (int j = 0; j <= 1; j++) {
     stringBuilder.append(
       ((0 <= halfbyte) && (halfbyte <= 9))
         ? (char) ('0' + halfbyte)
         : (char) ('a' + (halfbyte - 10)));
     halfbyte = digests[i] & 0x0F;
    }
   }
   return stringBuilder.toString();
  } catch (final Throwable throwable) {
   this.log.error("error converting password", throwable);
   return null;
  }
 }

javaSHA1实现加密解密

封装一个方法用于加密

/**
     * sha1加密
     * @param data
     * @return
     * @throws NoSuchAlgorithmException
     */
    public static String sha1(String data) throws NoSuchAlgorithmException {
        //加盐   更安全一些
        data += "lyz";
        //信息摘要器                                算法名称
        MessageDigest md = MessageDigest.getInstance("SHA1");
        //把字符串转为字节数组
        byte[] b = data.getBytes();
        //使用指定的字节来更新我们的摘要
        md.update(b);
        //获取密文  (完成摘要计算)
        byte[] b2 = md.digest();
        //获取计算的长度
        int len = b2.length;
        //16进制字符串
        String str = "0123456789abcdef";
        //把字符串转为字符串数组
        char[] ch = str.toCharArray();

        //创建一个40位长度的字节数组
        char[] chs = new char[len*2];
        //循环20次
        for(int i=0,k=0;i<len;i++) {
            byte b3 = b2[i];//获取摘要计算后的字节数组中的每个字节
            // >>>:无符号右移
            // &:按位与
            //0xf:0-15的数字
            chs[k++] = ch[b3 >>> 4 & 0xf];
            chs[k++] = ch[b3 & 0xf];
        }

        //字符数组转为字符串
        return new String(chs);
    }

主函数测试

    public static void main(String[] args) throws NoSuchAlgorithmException {
        String data = "跳梁小豆tlxd666";
        String result = sha1(data);
        System.out.println("加密后:"+result);
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Java中实现SHA1与MD5加密算法的基本方法

    SHA1 package com.stone.security; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.DigestInputStream; import java.security.DigestOutputStream; import java.s

  • Java SHA-256加密的两种实现方法详解

    本文实例讲述了Java SHA-256加密的两种实现方法.分享给大家供大家参考,具体如下: 最近在做注册的一个功能,密码要进行加密,一开始想用MD5加密,但是听说被破解了已经,于是想玩玩SHA-256加密.学习了下,总结两种方法供后面参考: 1.利用Apache的工具类实现加密: maven: <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifac

  • Java实现SHA1加密代码实例

    微信接入中需要用到SHA1的算法.Java版的SHA1加密如下: /* * 微信公众平台(JAVA) SDK * * Copyright (c) 2016, Ansitech Network Technology Co.,Ltd All rights reserved. * http://www.ansitech.com/weixin/sdk/ * * Licensed under the Apache License, Version 2.0 (the "License"); * y

  • Java 实现字符串SHA1加密方法

    目录 Java 字符串SHA1加密 导入类 定义函数 javaSHA1实现加密解密 封装一个方法用于加密 主函数测试 Java 字符串SHA1加密 导入类 import java.security.MessageDigest; 定义函数 private String toUserPwd(final String password) { try { if (password == null) { return null; } final MessageDigest messageDigest =

  • java判断字符串相等的方法

    java中的字符串比较竟然不能直接用"=="!!!!而要用equals(),返回true为两字符串相等,返回false为两字符串不相等,举个栗子: if (s1.equals(s2)) { System.out.println("s1与s2相等!!"); } else { System.out.println("s1与s2没啥关系!!"); } 1.字符串是对象类型,所以不能用简单的"=="判断 2.equals()比较的是对

  • Java实现字符串切割的方法详解

    今天给大家介绍一个小知识点,但是会非常的实用,就是平时我们写Java代码的时候,如果要对字符串进行切割,我们巧妙的运用一些技巧,可以把性能提升5~10倍.下面不说废话,直接来给大家上干货! 工作中常用的split()切割字符串效率高吗? 首先,我们用下面的一段代码,去拼接出来一个用逗号分隔的超长字符串,把从0开始一直到9999的每个数字都用逗号分隔,拼接成一个超长的字符串,以便于我们可以进行实验,代码如下所示: public class StringSplitTest { public stat

  • Java检查日期字符串是否合法的方法总结

    目录 WHY HOW 1.使用 DateFormat 检查 2.使用 LocalDate 检查 3.使用 DateTimeFormatter 检查 4.使用 Apache 出品的 commons-validator 检查 总结 WHY 后端接口在接收数据的时候,都需要进行检查.检查全部通过后,才能够执行业务逻辑.对于时间格式,我们一般需要检查这么几方面: 字符串格式是否正确,比如格式是不是yyyy-MM-dd 时间在合法范围内,比如我们需要限定在一个月内的时间 字符串可以解析为正常的时间,比如

  • java转换字符串编码格式的方法

    java转换字符串编码格式 (解码错误,重新解码) 字符集概念:规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系. 我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流. 乱码场景(纯属瞎掰): 1) 前台输入utf-8编码的一串汉字(string1). (页面编码为utf-8, 在内存中会将这串汉字以utf-8编码为对应的二进制流存储) 2) 这串汉字(string1)的二进制流在经过http协议传输到后台时,这段

  • java明文密码三重加密方法

    本文介绍了两种密码加密的方法,这两种很常见可以再百度随意找到. 1.摩斯密码: 说道密码加密不得不提的方法.很是经典. 首先说一下他的对照表,直接上图. 核心思想就是替换明文密码,将字符对应的替换成-与.两种符号的组合: 2.栅栏密码: 所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话. 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多.(一般不超过30个,也就是一.两句话) 这个没有什么好说的了,举个栗子:对明文ASDFGHJKL进行加密

  • Java对字符串进行加密解密

    要求: *  对用户输入的每个字符的值进行加密,将解密后的字符串输出 *  对用户输入的已加密字符串进行解密并输出 实现代码: import java.util.Scanner; /** * 要求: * 1.对用户输入的每个字符的值进行加密,将解密后的字符串输出 * 2.对用户输入的已加密字符串进行解密并输出 * @author Administration * */ public class Encryption { public static void main(String[] args)

  • Java四位电话号码的加密方法

    某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换.输入四位号码,求加密后的号码为多少? 代码如下: int number;//定义输入的号码 int encryptionNumber; //定义加密后的号码 int num1,num2,num3,num4;//定义这四位号码的四个位置(从左到右排列) @SuppressWarnings("resource") S

  • Python加密方法小结【md5,base64,sha1】

    本文实例总结了python加密方法.分享给大家供大家参考,具体如下: MD5加密: def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdigest() base64加密: import base64 s = '我是字符串' a = base64.b64encode(s) print a print base64.b64decode(a) 输出结果: ztLKx9fWt/u0rg== 我是字符串 sha

随机推荐