色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java sign和token

錢瀠龍1年前10瀏覽0評論

在Java中,sign和token是常用的安全認證機制。sign是指簽名,是一種基于密鑰的數字簽名,可以驗證通信數據的完整性和真實性。而token是指令牌,是一種基于令牌的身份認證機制,可以避免密碼的明文傳輸和存儲。

public static String sign(String content, String key) {
String encrypted = null;
try {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
mac.init(secretKeySpec);
byte[] actualMac = mac.doFinal(content.getBytes("UTF-8"));
encrypted = byte2hex(actualMac);
} catch (NoSuchAlgorithmException | UnsupportedEncodingException | InvalidKeyException e) {
e.printStackTrace();
}
return encrypted;
}

以上是一個簡單的Java簽名代碼示例,其中content是要簽名的內容,key是用于簽名的密鑰。使用HmacSHA256算法進行簽名,最終將簽名結果轉換成十六進制字符串返回。在實際使用中,可以將簽名結果與通信數據一起發送給服務器,服務器通過驗證簽名結果來確定通信數據的真實性。

而對于token認證,常用的方式是使用Json Web Token(JWT)。JWT是一種基于JSON的開放標準(RFC7519),用于在各個系統之間安全地傳輸聲明內容。下面是一個Java JWT生成代碼示例:

public static String createToken(String username, String[] roles, String secret) {
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
long expiresIn = 3600000L; 
Date expiresAt = new Date(nowMillis + expiresIn);
JwtBuilder jwtBuilder = Jwts.builder()
.setSubject(username)
.claim("roles", roles)
.setIssuedAt(now)
.setExpiration(expiresAt)
.signWith(SignatureAlgorithm.HS256, secret.getBytes());
return jwtBuilder.compact();
}

以上代碼示例中,createToken方法接受三個參數:用戶名、角色列表和用于簽名的secret。使用JJWT庫創建JwtBuilder對象,設置JWT的聲明內容,包括sub(主題)、roles(角色列表)、iat(簽發時間)和exp(過期時間),最后使用HS256算法和密鑰對JWT進行簽名。生成的token可以在HTTP頭信息中作為Authorization字段傳遞給服務器進行認證。