Java的HMAC SHA1演算法原始碼

2021-09-01 14:51:26 字數 2607 閱讀 3640

public class sha1 ;

// 摘要資料儲存陣列

private int digestint = new int[5];

// 計算過程中的臨時資料儲存陣列

private int tmpdata = new int[80];

// 計算sha-1摘要

private int process_input_bytes(byte bytedata)

// 摘要計算函式

encrypt();

}return 20;

}// 格式化輸入位元組陣列格式

private byte bytearrayformatdata(byte bytedata) else if (m == 56) else

// 補位後生成的新陣列內容

byte newbyte = new byte[size];

// 複製陣列的前面部分

system.arraycopy(bytedata, 0, newbyte, 0, n);

int l = n;

// 補1操作

newbyte[l++] = (byte) 0x80;

// 補0操作

for (int i = 0; i < zeros; i++)

// 計算資料長度,補資料長度位共8位元組,長整型

long n = (long) n * 8;

byte h8 = (byte) (n & 0xff);

byte h7 = (byte) ((n >> 8) & 0xff);

byte h6 = (byte) ((n >> 16) & 0xff);

byte h5 = (byte) ((n >> 24) & 0xff);

byte h4 = (byte) ((n >> 32) & 0xff);

byte h3 = (byte) ((n >> 40) & 0xff);

byte h2 = (byte) ((n >> 48) & 0xff);

byte h1 = (byte) (n >> 56);

newbyte[l++] = h1;

newbyte[l++] = h2;

newbyte[l++] = h3;

newbyte[l++] = h4;

newbyte[l++] = h5;

newbyte[l++] = h6;

newbyte[l++] = h7;

newbyte[l++] = h8;

return newbyte;

}private int f1(int x, int y, int z)

private int f2(int x, int y, int z)

private int f3(int x, int y, int z)

private int f4(int x, int y)

// 單元摘要計算函式

private void encrypt()

int tmpabcde = new int[5];

for (int i1 = 0; i1 < tmpabcde.length; i1++)

for (int j = 0; j <= 19; j++)

for (int k = 20; k <= 39; k++)

for (int l = 40; l <= 59; l++)

for (int m = 60; m <= 79; m++)

for (int i2 = 0; i2 < tmpabcde.length; i2++)

for (int n = 0; n < tmpdata.length; n++)

}// 4位元組陣列轉換為整數

private int bytearraytoint(byte bytedata, int i)

// 整數轉換為4位元組陣列

private void inttobytearray(int intvalue, byte bytedata, int i)

// 計算sha-1摘要,返回相應的位元組陣列

public byte getdigestofbytes(byte bytedata)

return digest;

}// 計算sha-1摘要,返回相應的十六進製制字串

public string getdigestofstring(byte bytedata)

public static byte gethmacsha1( string data,string key)

}else

}for (int i = ex; i < 64; i++)

for (int j = 0; j < 64; j++)

byte tempresult = sha1.getdigestofbytes(join(ipadarray,data.getbytes()));

return sha1.getdigestofbytes(join(opadarray,tempresult));

}public static void main(string args)

}

與頁面的c++ hmac_sha1結果一致。

HMACSHA1 加密演算法

hmacsha1 是從 sha1 雜湊函式構造的一種鍵控雜湊演算法,被用作 hmac 基於雜湊的訊息驗證 此 hmac 程序將金鑰與訊息資料混合,使用雜湊函式對混合結果進行雜湊計算,將所得雜湊值與該金鑰混合,然後再次應用雜湊函式。輸出的雜湊值長度為 160 位。注意 hmacsha1 接受任何大小的...

HMAC SHA1各語言版本實現

在各大開放平台大行其道的網際網路開發潮流中,呼叫各平台的api介面過程中,無一例外都會用到計算簽名值 sig值 而在各種計算簽名的方法中,經常被採用的就是hmac sha1,現對hmac sha1做乙個簡單的介紹 hmac,雜湊訊息鑑別碼,基於金鑰的hash演算法認證協議。實現原理為 利用已經公開的...

HMAC SHA1加密 和MD5加密

nsstring hmac sha1 nsstring key text nsstring text md5加密 nsstring md5 nsstring str const char cstr str utf8string unsigned char result 16 cc md5 cstr,...