Hashing techniques
ここでは最良の選択でしょう。
HmacSHA1
やなどの任意のハッシュ アルゴリズムを使用できますMD5
。
Post
またはを使用してデータをサーバーに渡す場合Get
、まず、任意のハッシュ アルゴリズムを使用してデータからトークンを作成します。(以下のデータを HMAC SHA1 に変換する関数を参照してください)
このデータを渡すときに、トークンもサーバーに渡します。サーバーは、クライアントが使用したものと同じハッシュ アルゴリズムも使用し、サーバーはリクエストで渡されたデータからトークンを作成します。
その後、サーバーは、生成されたトークンとリクエストで渡されたトークンを照合します。
両方のトークンが一致する場合、リクエストで渡されるデータは改ざんされていません。それ以外の場合、データは改ざんされています。
次の方法を使用して、データのトークンを作成できます。
/**
* Encrypts the data passed to it using Hmac-SHA1.
*
* @param dataToEncrypt
* data that is to be encrypted.
* @return The token that is generated after encrypting data.
*/
public static String convertDataToHmacSHA1(final String dataToEncrypt) {
String returnString;
try {
// Get an hmac_sha1 key from the raw key bytes
final byte[] keyBytes = HMAC_SHA1_KEY.getBytes();
final SecretKeySpec signingKey = new SecretKeySpec(keyBytes,
"HmacSHA1");
// Get an hmac_sha1 Mac instance and initialize with the signing key
final Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
// Compute the hmac on input data bytes
final byte[] rawHmac = mac.doFinal(dataToEncrypt.getBytes());
final StringBuffer stringBuffer = new StringBuffer();
for (byte b : rawHmac) {
stringBuffer.append(String.format("%02x", b));
}
returnString = stringBuffer.toString();
Log.e("Token", returnString);
return returnString;
} catch (Exception e) {
Log.e(TAG, "" + e);
}
return returnString;
}