Java实现SHA算法的方法详解

本文实例讲述了Java实现SHA算法的方法。分享给大家供大家参考,具体如下:

一 简介

安全散列算法

固定长度摘要信息

二 SHA算法

SHA-1、SHA-2(SHA-224、SHA-256、SHA384、SHA-512)

三 SHA算法实现

package com.imooc.security.sha;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.digests.SHA224Digest;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class ImoocSHA {
  private static String src = "cakin24 security sha";
  public static void main(String[] args) {
     jdkSHA1();
     bcSHA1();
     bcSHA224();
     ccSHA1();
  }
  public static void jdkSHA1() {
    try {
      MessageDigest md = MessageDigest.getInstance("SHA");
      md.update(src.getBytes());
      System.out.println("jdk sha-1 : " + Hex.encodeHexString(md.digest()));
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
  }
  public static void bcSHA1() {
    Digest digest = new SHA1Digest();
    digest.update(src.getBytes(), 0, src.getBytes().length);
    byte[] sha1Bytes = new byte[digest.getDigestSize()];
    digest.doFinal(sha1Bytes, 0);
    System.out.println("bc sha-1 : " + org.bouncycastle.util.encoders.Hex.toHexString(sha1Bytes));
  }
  public static void bcSHA224() {
    Digest digest = new SHA224Digest();
    digest.update(src.getBytes(), 0, src.getBytes().length);
    byte[] sha224Bytes = new byte[digest.getDigestSize()];
    digest.doFinal(sha224Bytes, 0);
    System.out.println("bc sha-224 : " + org.bouncycastle.util.encoders.Hex.toHexString(sha224Bytes));
  }
  public static void ccSHA1() {
    System.out.println("cc sha1 - 1 :" + DigestUtils.sha1Hex(src.getBytes()));
    System.out.println("cc sha1 - 2 :" + DigestUtils.sha1Hex(src));
  }
  //384、256、512。。。。。。
}

四 运行结果

jdk sha-1 : ba28a0f5f08efc8afaee4706ffd496e1f88befdb
bc sha-1 : ba28a0f5f08efc8afaee4706ffd496e1f88befdb
bc sha-224 : ae3b58439cd53d28455781fe6dc20c83a45d63e1d9550330c7911f58
cc sha1 - 1 :ba28a0f5f08efc8afaee4706ffd496e1f88befdb
cc sha1 - 2 :ba28a0f5f08efc8afaee4706ffd496e1f88befdb

五 SHA算法应用

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

在线SHA1加密工具:
http://tools.jb51.net/password/sha1encode

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java数组操作技巧总结》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java实现SHA-1算法实例

    本文实例讲述了Java实现SHA-1算法的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: public class SHA1Util {     private static final boolean hexcase = false;     private static final String b64pad = "=";     private static final int chrsz = 8;     // 得到字符串SHA-1值的方法     pub

  • java算法导论之FloydWarshall算法实现代码

    摘要: 算法导论之FloydWarshall算法 求一个图中任意两点之间的最短路径 FloydWarshall算法是通过动态规划来计算任意两点之间的最短路径 如果普通求最短路径,可以对图进行V次(顶点数)BellmanFord算法. 这样的话时间复杂度为EV^2 如果是稀疏图,则近似于V^3 但是如果是密集图,则时间复杂度会近似达到V^4,这种情况需要优化,这里FloydWarshall通过动态规划进行优化 ,并且使用邻接矩阵来表示图. 实例代码: package org.loda.graph;

  • 详解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实现常用加密算法——单向加密算法MD5和SHA

    本文主要介绍了Java实现常用加密算法--单向加密算法MD5和SHA,具体如下: 1.Java的安全体系架构 1.1 Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.security 包(及其子包),以及sun.securityAPI包(及其子包)中.设计用于帮助开发人员在程序中同时使用低级和高级安全功能. JDK 1.1 中第一次发布的 JDK 安全中引入了"Java 加密体系结构"(JCA),

  • 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 中Excel转shape file的实例详解

    java  中Excel转shape file的实例详解 概述: 本文讲述如何结合geotools和POI实现Excel到shp的转换,再结合前文shp到geojson数据的转换,即可实现用户上传excel数据并在web端的展示功能. 截图: 原始Excel文件 运行耗时 运行结果 代码: package com.lzugis.geotools; import com.lzugis.CommonMethod; import com.vividsolutions.jts.geom.Coordina

  • Java 详解单向加密--MD5、SHA和HMAC及简单实现实例

    Java 详解单向加密--MD5.SHA和HMAC及简单实现实例 概要: MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法. MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.MD5是输入不定长度信息,输出固定长度128-bits的算法. MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何

  • Java用GDAL读写shapefile的方法示例

    GDAL介绍 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用抽象数据模型来表达所支持的各种文件格式.它还有一系列命令行工具来进行数据转换和处理. GDAL官方网址:http://www.gdal.org/,它能支持当前流行的各种地图数据格式,包括栅格和矢量地图,具体参考官方网站.该库使用C/C++开发,在Java中使用需要自己编译,具体编译过程这里就不说了,下面来看看本文的主要内容吧. Java使用G

  • java 中使用maven shade plugin 打可执行Jar包

    java 中使用maven shade plugin 打可执行Jar包 eclipse里有一个功能叫做"打可执行(runnable) jar包", 用这个功能可以把一个工程自身和所有依赖包打成一个fat jar,并且指定Main方法,这样直接使用java jar xxx.jar就可以运行代码了. 但是在不使用eclipse的时候呢?其实,借助maven,我们很容易实现同样功能.maven提供了一个shade plugin,可以用来打fat jar, 同时也提供了指定main方法的功能.

  • java中加密的实现方法(MD5,MD2,SHA)

    java中加密的实现方法(MD5,MD2,SHA) 实例代码:注释都很清楚, import java.security.MessageDigest; import javax.xml.bind.annotation.adapters.HexBinaryAdapter; public class Main { static String src = "Hello,sahadev!"; public static void main(String[] args) { MD5(); MD2(

随机推荐