File Hash Example
릴리즈한 결과물의 변경이 었는지 확인 할수 있게 Hash 값을 같이 제공한다.
public byte[] sha256(File file) {
Digest digest = new SHA256Digest();
int hashSize = digest.getDigestSize();
byte[] outBuff = new byte[hashSize];
byte[] buf = new byte[4*1024]; // 4KB
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
int len;
while ((len = fis.read(buf)) > 0) {
digest.update(buf, 0, len);
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (fis != null) {
try { fis.close(); } catch (Exception ign) {}
}
}
digest.doFinal(outBuff, 0);
return outBuff;
}
릴리즈된 nodejs 파일의 SHA256 값을 제공한다.
// https://nodejs.org/dist/v18.17.0/SHASUMS256.txt
b61952f8468fe50b24b46039ad795af4bbea3751ded7cb488ec52e5a332f91ce node-v18.17.0-aix-ppc64.tar.gz
19731ef427e77ad9c5f476eb62bfb02a7f179d3012feed0bbded62e45f23e679 node-v18.17.0-darwin-arm64.tar.gz
621cf884c4c27ddc595ff23f35ccd6fa1e827470581c30d31d779ba3cd6a162e node-v18.17.0-darwin-arm64.tar.xz
2f381442381f7fbde2ca644c3275bec9c9c2a8d361f467b40e39428acdd6ccff node-v18.17.0-darwin-x64.tar.gz
774734231d484d72e14f3327db6d7915abd3e2164ba577dd78affa5eade48a11 node-v18.17.0-darwin-x64.tar.xz
7c47c07521f8be7693f3b0436d2ef0cb5a490d070d1d9a3606decc55c39c41c4 node-v18.17.0-headers.tar.gz
1a7a3bbb7299f69e16a8ee2b327dd1c4811a9376bcafe41f8310467a9a9e3307 node-v18.17.0-headers.tar.xz
사이즈가 작은 node-v18.17.0-headers.tar.xz 파일의 sha256 값이 맞는지 확인해 보자.
@Test
public void hash_sha256_test_002() {
File file = Util.getResourceFile("hash/node-v18.17.0-headers.tar.xz");
Hash hash = new Hash();
byte[] output = hash.sha256(file);
assertEquals("1A7A3BBB7299F69E16A8EE2B327DD1C4811A9376BCAFE41F8310467A9A9E3307", toHex(output));
}
'bouncy castle' 카테고리의 다른 글
[bouncy castle] SEED CBC Example (0) | 2023.08.07 |
---|---|
[bouncy castle] SEED ECB Example (0) | 2023.08.05 |
[bouncy castle] HMAC-MD5, HMAC-SHA1 example (0) | 2023.08.05 |
[bouncy castle] AES CMAC 128 example (0) | 2023.08.04 |
[bouncy castle] Random generator (0) | 2023.08.01 |