SHA散列算法心得

SHA256和MD5类似都是MD4推倒出来的,都是单向不可逆的,

主要使用到的类有: MessageDigest 该类提供摘要算法的功能,

主要用到的方法有: update(byte[]): 更新摘要 和 digest() : 进行hash 哈希计算(加密)

用到codec包中的Hex.encodeHexString(byte[])方法转码 前提要导 有 commons-codec-1.8.jar 包

SHA加密优点
由于SHA也是有MD4演变过来的,所以其优点与MD5大致一样
•压缩性:任意长度的数据,算出的SHA值长度都是固定的。
•容易计算:从原数据计算出SHA值很容易。
•抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的SHA值都有很大区别。
•强抗碰撞:已知原数据和其SHA值,想找到一个具有相同SHA值的数据(即伪造数据)是非常困难的。

SHA应用场景
•一致性验证
•数字签名
•安全访问认证

原理通俗理解:(比方说你要给我打钱,然后我发给你银行卡账号,这时候在传输的时候,就可能会有黑客在其中把我的账号换成是他的,导致你收到的账号不是我的,然后打钱的时候就打给他了,所以为了避免这样的情况发生,我在发给你账号之前使用SHA算法对账号进行哈希计算(加密),产生一条唯一的码,然后我把账号和那条码一起发过去,然后你收到我的账号时,也用SHA进行哈希计算,也产生一条码,然后和我的码进行比较,两条码完全一样时,才说明我发给你得=的信息没有被修改过。)

源码:

package org.me.demo1;

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

import org.apache.commons.codec.binary.Hex;

public class Sha256Demo {

    public static String SHA256Encrypt(String clearText){

        MessageDigest md=null;
        try {
            md=MessageDigest.getInstance("SHA-256");

        } catch (NoSuchAlgorithmException e) {
            System.out.println("NoSuchAlgorithmException!");
        }
        if (md!=null) {
            //使用要加密的字节来更新摘要
            md.update(clearText.getBytes());
            //完成Hash计算
            byte[] digestOfByte=md.digest();
            //摘要转换成字符串  转码
            String digestOfString=Hex.encodeHexString(digestOfByte);

            return digestOfString;
        }

        return null;
    }

    public static void main(String[] args) {
        System.out.println(SHA256Encrypt("today is third day!"));
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值