Base64, SHA-256等加密算法

 所需的工具:Spring开发工具或者其他java开发工具

Base64

二进制(图片、文件、声音)变成可打印的文本,缺点数据增大 1/3,变成源来的4/3
BASE64 编码,解码
   64 种符号
开放的编码解码,没有安全可言,大家都可以解码 

数据长,编码结果也长


 

Base64, SHA-256等加密算法_第1张图片 


 SHA-256

  密码使用安全散列存储
       Spring Security 就是使用了 SHA-256 + 盐(随机值)
        MD5,SHA-1, SHA-256 消息摘要,单向,不可逆
        算法确定,结果长度确定
        SHA 不是傻,是security-Hash 函数

工程目录:

Base64, SHA-256等加密算法_第2张图片


App.java

package pass;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import java.util.Date;

import javax.crypto.SecretKey;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;

public class App {

	public static void main(String[] args) throws NoSuchAlgorithmException {

		// 二进制(图片、文件、声音)变成可打印的文本,缺点数据增大 1/3,变成源来的4/3
		// BASE64 编码,解码
		// 64 种符号
		// 开放的编码解码,没有安全可言,大家都可以解码
		String text = "jack ";
		
		// 数据长,编码结果也长
		// 编码
//		String b64 = Base64.getEncoder().encodeToString(text.getBytes());
//		System.out.println(b64);
//		// 解码
//		byte[] data = Base64.getDecoder().decode(b64);
//		System.out.println(new String(data));

		// 密码使用安全散列存储
		// Spring Security 就是使用了 SHA-256 + 盐(随机值)
		// MD5,SHA-1, SHA-256 消息摘要,单向,不可逆
		// 算法确定,结果长度确定
		// SHA 不是傻,是security-Hash 函数
		byte[] hash = MessageDigest.getInstance("SHA-256").digest(text.getBytes());
		System.out.println(Arrays.toString(hash));
		System.out.println(hash.length);
		System.out.println(new BigInteger(1, hash).toString(16));
		System.out.println(new BigInteger(1, hash).toString(16).length());
//
//		SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
//		System.out.println(key.getFormat());
//		System.out.println(key.getAlgorithm());
//		System.out.println(Arrays.toString(key.getEncoded()));
//		System.out.println(key.getEncoded().length);
//		System.out.println(new BigInteger(1, key.getEncoded()).toString(16));
//		
//		
//		
//		String jwt = Jwts.builder()
//				.setAudience("you")
//				.setIssuer("joe")
//				.setIssuedAt(new Date())
//				.signWith(key)
//				.compact();
//		
//		System.out.println(jwt);
		
		
		
		
		
		
		

	}
}

 


控制台输出:


以上就是 Base64, SHA-256等加密算法,后续会写令牌的,有问题的小伙伴,欢迎留言!!!

你可能感兴趣的:(java,Spring)