精华内容
下载资源
问答
  • Java中实现SHA1加密

    2019-02-19 10:28:32
    此资源主要是实现Java中的SHA1加密方式,将资源下载后直接在程序中复制即可使用。
  • java实现SHA1SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及apache BASE64 jar和源码
  • 给大家分享了Java实现SHA1加密的相关实例代码,有兴趣的朋友可以测试参考下。
  • javaSHA1实现加密解密

    千次阅读 2018-09-26 18:52:00
    封装一个方法用于加密 /** * sha1加密 * @param data * @return ... * @throws NoSuchAlgorithmException ... public static String sha1(String data) throws NoSuchAlgorithmException...

    封装一个方法用于加密

         /**
         * 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);
    
        }    

     

    转载于:https://www.cnblogs.com/luoxiaodou/p/9708884.html

    展开全文
  • 主要介绍了Java SHA-256加密的两种实现方法,结合实例形式分析了java实现SHA-256加密的实现代码与相关注意事项,需要的朋友可以参考下
  • JAVA SHA256Util工具类

    2020-11-27 15:40:12
    java原生的摘要实现SHA256加密
  • Java-sha256解密工具类

    千次阅读 2021-01-15 11:37:47
    Java-sha256解密工具类学习目标前言Java-sha256解密工具类 前言 希望:2012新的一年,想要的都拥有,得不到的都释怀! Java-sha256解密工具类 package com.jay.web.util; import java.security.MessageDigest...

    在这里插入图片描述

    学习目标

    1、一周掌握 JAVA入门到进阶知识
    2、掌握基础C#l窗体知识
    3、手把手教你vbs脚本制作
    4、强大的 IDEA编程利器
    5、经典少见的 面试题目技巧


    Java-sha256解密工具类

    展开全文
  • package ... import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.i...
    package com.lhn.serviceA.util;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URL;
    import java.util.zip.CRC32;
    import java.util.zip.CheckedInputStream;
    
    import org.apache.commons.codec.binary.Base64;
    import org.apache.commons.codec.digest.DigestUtils;
    import org.apache.tomcat.util.http.fileupload.IOUtils;
    
    /**
     * 加密工具类,包含MD5,BASE64,SHA,CRC32
     * 
     */
    public class CryptoUtils {
    
        private static final String DEFAULT_CHARSET = "UTF-8";
    
        /**
         * MD5加密
         * 
         * @param bytes
         *            an array of byte.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeMD5(final byte[] bytes) {
            return DigestUtils.md5Hex(bytes);
        }
    
        /**
         * MD5加密,默认UTF-8
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeMD5(final String str) {
            return encodeMD5(str, DEFAULT_CHARSET);
        }
    
        /**
         * MD5加密
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @param charset
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeMD5(final String str, final String charset) {
            if (str == null) {
                return null;
            }
            try {
                byte[] bytes = str.getBytes(charset);
                return encodeMD5(bytes);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * SHA加密
         * 
         * @param bytes
         *            an array of byte.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeSHA(final byte[] bytes) {
            return DigestUtils.sha512Hex(bytes);
        }
    
        /**
         * SHA加密
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @param charset
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeSHA(final String str, final String charset) {
            if (str == null) {
                return null;
            }
            try {
                byte[] bytes = str.getBytes(charset);
                return encodeSHA(bytes);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * SHA加密,默认utf-8
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeSHA(final String str) {
            return encodeSHA(str, DEFAULT_CHARSET);
        }
    
        /**
         * BASE64加密
         * 
         * @param bytes
         *            an array of byte.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeBASE64(final byte[] bytes) {
            return new String(Base64.encodeBase64String(bytes));
        }
    
        /**
         * BASE64加密
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @param charset
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeBASE64(final String str, String charset) {
            if (str == null) {
                return null;
            }
            try {
                byte[] bytes = str.getBytes(charset);
                return encodeBASE64(bytes);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * BASE64加密,默认UTF-8
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String encodeBASE64(final String str) {
            return encodeBASE64(str, DEFAULT_CHARSET);
        }
    
        /**
         * BASE64解密,默认UTF-8
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String decodeBASE64(String str) {
            return decodeBASE64(str, DEFAULT_CHARSET);
        }
    
        /**
         * BASE64解密
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @param charset
         *            字符编码
         * @return a {@link java.lang.String} object.
         */
        public static String decodeBASE64(String str, String charset) {
            try {
                byte[] bytes = str.getBytes(charset);
                return new String(Base64.decodeBase64(bytes));
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * CRC32字节校验
         * 
         * @param bytes
         *            an array of byte.
         * @return a {@link java.lang.String} object.
         */
        public static String crc32(byte[] bytes) {
            CRC32 crc32 = new CRC32();
            crc32.update(bytes);
            return Long.toHexString(crc32.getValue());
        }
    
        /**
         * CRC32字符串校验
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @param charset
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String crc32(final String str, String charset) {
            try {
                byte[] bytes = str.getBytes(charset);
                return crc32(bytes);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * CRC32字符串校验,默认UTF-8编码读取
         * 
         * @param str
         *            a {@link java.lang.String} object.
         * @return a {@link java.lang.String} object.
         */
        public static String crc32(final String str) {
            return crc32(str, DEFAULT_CHARSET);
        }
    
        /**
         * CRC32流校验
         * 
         * @param input
         *            a {@link java.io.InputStream} object.
         * @return a {@link java.lang.String} object.
         */
        public static String crc32(InputStream input) {
            CRC32 crc32 = new CRC32();
            CheckedInputStream checkInputStream = null;
            int test = 0;
            try {
                checkInputStream = new CheckedInputStream(input, crc32);
                do {
                    test = checkInputStream.read();
                } while (test != -1);
                return Long.toHexString(crc32.getValue());
            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    
        /**
         * CRC32文件唯一校验
         * 
         * @param file
         *            a {@link java.io.File} object.
         * @return a {@link java.lang.String} object.
         */
        public static String crc32(File file) {
            InputStream input = null;
            try {
                input = new BufferedInputStream(new FileInputStream(file));
                return crc32(input);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            } finally {
                IOUtils.closeQuietly(input);
            }
        }
    
        /**
         * CRC32文件唯一校验
         * 
         * @param url
         *            a {@link java.net.URL} object.
         * @return a {@link java.lang.String} object.
         */
        public static String crc32(URL url) {
            InputStream input = null;
            try {
                input = url.openStream();
                return crc32(input);
            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            } finally {
                IOUtils.closeQuietly(input);
            }
        }
    }
    
    

    下载地址:链接: https://pan.baidu.com/s/1vI_eVgV_69sHTeGsEuj3HQ 提取码: ki2p

    转载自《恋在那时的博客》

    展开全文
  • java SHA1加密

    热门讨论 2013-07-23 14:57:25
    简单的SHA1加密
  • JAVA语言。暴力破解,4位ASCII码符号(包括数字字母符号)组成的明文。内含字典生成代码。
  • sha1 加密解密

    2013-11-29 16:20:50
    sha1加密解密的这个不错的,经过测试的,很好的
  • Java HMAC SHA1

    热门讨论 2013-01-06 00:52:02
    java下的HMAC SHA1算法源码,可以根据Key进行SHA1加密.
  • MD5、SHA1SHA256以及SHA512加解密算法实现源码。 实现语言:C代码实现
  • spring框架中关于RSA sha-256加密解密,加签验签工具类
  • 1.java-RSA加密解密 2.java-zip加密压缩 3.js数据加密MD5 SHA1 RSA 里面都有使用方法和jar包、js,
  • Java实现SHA1的加密算法(散列/哈希)
  • 各种加密解密的实现,包含CryptoJS v3.1.2和个人易语言调试过的Base64、MD5、SHA、AES、RAS等js文件。
  • Java解密技术系列之 SHA

    万次阅读 多人点赞 2015-02-27 11:08:54
    这篇文章继续之前提到的单向加密,主要讲的是 SHA,同 MD5 一样,SHA 同样也是一个系列,它包括 SHA-1SHA-224,SHA-256,SHA-384,和 SHA-512 等几种算法。其中,SHA-1SHA-224 和 SHA-256 适用于长度不超过 2^64...



    上一篇文章中介绍了基本的单向加密算法 — — MD5,也大致的说了说它实现的原理。这篇文章继续之前提到的单向加密,主要讲的是 SHA,同 MD5 一样,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 二进制位的消息。


    背景


    开始正文之前,简单的说一下背景。乍一说 SHA 你可能不知道,但说到散列和散列算法,你一定会知道,也就是平常所指的 Hash。那么,先了解一下什么是散列。散列,是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。说的很明确,散列的结果是不可逆的,根据散列结果,无法推出原始信息。


    正文


    了解了背景之后,我们就开始介绍 SHA 了。

    SHA,全称为“Secure Hash Algorithm”,中文名“安全哈希算法”,主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于 2^64 位的消息,SHA1 会产生一个 160 位的消息摘要。

    该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值的过程。

    上边也提到了,SHA 规定了很多种算法,包括了 SHA-1,SHA-224,SHA-256,等很多种。这里我以 SHA-1 为例,讲一下 SHA-1 是如何工作的。

    SHA-1 有两个特点
    • 不可以从消息摘要中复原信息
    • 两个不同的消息,不会产生同样的消息摘要

    SHA-1 是一种数据加密算法,主要是接收一段明文,然后以一种不可逆的方式将它转换成一段密文,也可以简单的理解为取一串输入码,并把它们转化为长度较短、位数固定的输出序列即散列值的过程。

    单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA 将输入流按照每块 512 位(64 个字节)进行分块,并产生 20 个字节的被称为信息认证代码或信息摘要的输出。

    该算法输入报文的长度不限,产生的输出是一个 160 位的报文摘要。输入是按 512 位的分组进行处理的。SHA-1 是不可逆的、防冲突,并具有良好的雪崩效应。

    通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。


    SHA-1 与 MD5 的比较


    因为二者均由 MD4 导出,SHA-1 和 MD5 彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:

    • 对强行攻击的安全性

    最显著和最重要的区别是 SHA-1 摘要比 MD5 摘要长 32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对 MD5 是 2^128 数量级的操作,而对 SHA-1 则是 2^160 数量级的操作。这样,SHA-1 对强行攻击有更大的强度。

    • 对密码分析的安全性

    由于 MD5 的设计,易受密码分析的攻击,SHA-1 显得不易受这样的攻击。

    • 速度

    在相同的硬件上,SHA-1 的运行速度比 MD5 慢。


    代码实现


    <span style="font-family:Comic Sans MS;font-size:12px;">package com.sica.sha;
    
    import com.google.common.base.Strings;
    
    import java.security.MessageDigest;
    
    /**
     * Created by xiang.li on 2015/2/11.
     */
    public class SHA {
        /**
         * 定义加密方式
         */
        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 SHA() {
    
        }
    
        /**
         * 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 (Strings.isNullOrEmpty(data)) {
                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();
        }
    
        /**
         * 测试方法
         * @param args
         */
        public static void main(String[] args) throws Exception {
            String key = "123";
            System.out.println(encryptSHA(key));
        }
    }</span>


    结束语


    看到这,我想 SHA-1 的简单原理你应该是了解了,而且,对于应用来说也并不难,可以参考上述的 Java 代码。回过头来在想想 MD5,通过上面的文章,你就能知道,其实,SHA-1 与 MD5 是同出一辙的,只是他们各自的实现方式不同,SHA-1 在位操作数量级上也要比 MD5 更加的复杂,因此,对于安全的考虑,SHA-1 相对来说还是很可靠的。

    至于什么时候会用到它,那么就要考虑 SHA-1 的特点了。很明确的,不可逆性,以及唯一性。那么,我想,适用于 MD5 的加密的,也同样适用于 SHA-1。而且,在安全性上来说,SHA-1 更胜于 MD5,如果是对速度有严格要求的话,那么,还是优先考虑 MD5 吧。


    展开全文
  • JAVA实现的sha256加密算法

    热门讨论 2012-05-08 01:03:29
    java实现的sha256加密算法
  • java实现的sha1加密算法

    热门讨论 2012-12-28 19:10:02
    java实现的sha1加密算法
  • SHA256withRSA java常用的json加签验签工具类 SHA256withRSA 完美工具类 RSAUtils,包含: 1、签名 2、验签 3、公钥加密》私钥解密 4、私钥加密》公钥解密
  • RSA加密验证生成公钥私钥工具类 生成RSA公钥私钥 对传入的数据验证签名,返回验证结果用私钥对信息生成数字签名
  • java HMACSHA1 加密解密

    千次阅读 2018-06-29 17:24:50
    "HmacSHA1" ) ; // 生成一个指定 Mac 算法 的 Mac 对象 Mac mac = Mac. getInstance ( "HmacSHA1" ) ; // 用给定密钥初始化 Mac 对象 mac.init(signinKey) ; // 完成 Mac 操作 byte [] iv...
  • Java加密解密算法-SHA加密

    千次阅读 2016-07-21 20:08:35
    Java加密解密算法-SHA加密
  • sha256不含盐值 sha256含盐值 sha256含盐值的校验 生成秘钥 加密AES128 解密AES128
  • SHA1加密算法,返回的是二进制的字符串;如果要直接返回字节,可以用最后一个方法调用,然后在用base64转换为字符串。注意:要把.txt后缀改为.java后缀
  • JAVA SHA-1加密及DES加解密

    千次阅读 2016-07-05 14:12:07
    1SHA-1加密 SHA-1标准加密: //SHA-1 public static String getSha1(String str){ if(str == null || str.length() == 0){ return null; } char hexDigits[] = {'0','1','2','3','4','5','6','7','8',...
  • 主要介绍了java中常用工具类之字符串操作类和MD5加密解密类,需要的朋友可以参考下
  • Java工具集-HMacSHA1解密

    千次阅读 2020-06-08 16:17:57
    import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * @progra
  • 支付宝验名验证函数可参考此代码。 SHA1withRsa的各种操作:加密解密,加签验签。 C#源码可编译。签名调用方法:SHA1WithRSA.sign(str, key, "UTF-8");

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,123
精华内容 6,049
关键字:

java的sha1解密

java 订阅