Java暗号化技術(三)——HMACSHA 1暗号化アルゴリズム
HMACSHA 1は、SHA 1ハッシュ関数から構成されたキーイングハッシュアルゴリズムであり、HMAC(ハッシュベースのメッセージ検証コード)として使用される.このHMACプロセスは、鍵をメッセージデータと混合し、ハッシュ関数を使用して混合結果をハッシュ計算し、得られたハッシュ値を鍵と混合し、ハッシュ関数を再適用する.出力されるハッシュ値の長さは160ビットである.
送信者と受信者が秘密鍵を共有することを前提として、HMACは、不安全なチャネルを介して送信されたメッセージが改ざんされたかどうかを決定するために使用され得る.送信者は、元のデータのハッシュ値を計算し、元のデータとハッシュ値を1つのメッセージに同時に送信する.受信者は、受信メッセージのハッシュ値を再計算し、計算されたHMACが送信されたHMACと一致するかどうかを確認する.
メッセージの変更と正しいハッシュ値の再生成には鍵が必要なため、データまたはハッシュ値の変更によって不一致が発生します.したがって、元のハッシュ値が計算されたハッシュ値と一致する場合、メッセージは認証される.
SHA−1(セキュリティハッシュアルゴリズム、SHS、セキュリティハッシュ規格とも呼ばれる)は、米国政府によって発行された暗号化ハッシュアルゴリズムである.任意の長さの文字列から160ビットのハッシュ値が生成されます.
HMACSHA 1は任意のサイズの鍵を受け取り、160ビットの長さのハッシュ・シーケンスを生成する.
送信者と受信者が秘密鍵を共有することを前提として、HMACは、不安全なチャネルを介して送信されたメッセージが改ざんされたかどうかを決定するために使用され得る.送信者は、元のデータのハッシュ値を計算し、元のデータとハッシュ値を1つのメッセージに同時に送信する.受信者は、受信メッセージのハッシュ値を再計算し、計算されたHMACが送信されたHMACと一致するかどうかを確認する.
メッセージの変更と正しいハッシュ値の再生成には鍵が必要なため、データまたはハッシュ値の変更によって不一致が発生します.したがって、元のハッシュ値が計算されたハッシュ値と一致する場合、メッセージは認証される.
SHA−1(セキュリティハッシュアルゴリズム、SHS、セキュリティハッシュ規格とも呼ばれる)は、米国政府によって発行された暗号化ハッシュアルゴリズムである.任意の長さの文字列から160ビットのハッシュ値が生成されます.
HMACSHA 1は任意のサイズの鍵を受け取り、160ビットの長さのハッシュ・シーケンスを生成する.
package com.hujl.oauth.signature;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class HMACSHA1 {
private static final String MAC_NAME = "HmacSHA1";
private static final String ENCODING = "UTF-8";
/*
* HMAC
* @return
* @throws Exception
*
public static String initMacKey() throws Exception {
//
KeyGenerator KeyGenerator keyGenerator =KeyGenerator.getInstance(MAC_NAME);
//
SecretKey secretKey =keyGenerator.generateKey();
return null;
}
*/
/**
* HMAC-SHA1 encryptText
* @param encryptText
* @param encryptKey
* @return
* @throws Exception
*/
public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception
{
byte[] data=encryptKey.getBytes(ENCODING);
// ,
SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);
// Mac Mac
Mac mac = Mac.getInstance(MAC_NAME);
// Mac
mac.init(secretKey);
byte[] text = encryptText.getBytes(ENCODING);
// Mac
return mac.doFinal(text);
}
}