概述
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!"));
}
}
最后
以上就是无辜抽屉为你收集整理的SHA散列算法心得的全部内容,希望文章能够帮你解决SHA散列算法心得所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复