You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					38 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					38 lines
				
				1.0 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								package com.ynxbd.common.helper.common;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import javax.crypto.Mac;
							 | 
						||
| 
								 | 
							
								import javax.crypto.spec.SecretKeySpec;
							 | 
						||
| 
								 | 
							
								import java.nio.charset.StandardCharsets;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * HMAC算法
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								public class HMACHelper {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public static String sha256(String data, String key) {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            sha256_HMAC.init(secret_key);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            byte[] array = sha256_HMAC.doFinal(data.getBytes(StandardCharsets.UTF_8));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            StringBuilder sb = new StringBuilder();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            for (byte item : array) {
							 | 
						||
| 
								 | 
							
								                sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            return sb.toString();
							 | 
						||
| 
								 | 
							
								        } catch (Exception e) {
							 | 
						||
| 
								 | 
							
								            e.printStackTrace();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public static void main(String[] args) {
							 | 
						||
| 
								 | 
							
								        System.out.println(sha256("123", "1"));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |