zl程序教程

您现在的位置是:首页 >  其他

当前栏目

安卓逆向 -- 算法基础(SHA)

2023-03-14 22:37:46 时间

一、SHA算法


SHA由美国标准与技术研究所(NIST)设计并于1993年发表,该版本称为SHA-0,由于很快被发现存在安全隐患,1995年发布了SHA-1。2002年,NIST分别发布了SHA-256、SHA-384、SHA-512,这些算法统称SHA-2。2008年又新增了SHA-224。由于SHA-1已经不太安全,目前SHA-2各版本已成为主流。


二、常用的SHA-256算法


1、SHA-256:32个字节、64个字符、256个bit


2、使用方式和MD5方法一样,只是传入算法名不一样


3、java版


String bs= "逆向有你a";
MessageDigest shasf=MessageDigest.getInstance("SHA-256");//我要用md5算法
shasf.update(bs.getBytes());//我要加密的数据
byte[] ressha = shasf.digest();//给我加密
System.out.println("SHA-256加密(字节):"+Arrays.toString(ressha));
System.out.println("SHA-256加密(字符串):"+bytes2HexString(ressha));
MessageDigest shasf1 = MessageDigest.getInstance("sha-256");
shasf1.update("逆向".getBytes(StandardCharsets.UTF_8));
shasf1.update("有你".getBytes(StandardCharsets.UTF_8));
byte[] ressha1 = shasf1.digest("a".getBytes(StandardCharsets.UTF_8));
System.out.println(bytes2HexString(ressha1));
运行结果:
SHA-256加密(字节):[-55, 52, -50, 36, -123, 97, 5, 78, -89, -81, -84, -15, -22, 80, 62, -1, -65, -124, -122, -49, -56, -56, 23, -2, 97, 99, -26, 71, 88, -111, 103, -88]
SHA-256加密(字符串):C934CE248561054EA7AFACF1EA503EFFBF8486CFC8C817FE6163E647589167A8
C934CE248561054EA7AFACF1EA503EFFBF8486CFC8C817FE6163E647589167A8

4、JS版,同样需要CryptoJS加密库配合

var CryptoJS=module.exports;
function test()
{
    return CryptoJS.SHA256("逆向有你a").toString().toUpperCase();
}
console.log(test());

禁止非法,后果自负