์์ฆ ํซํ ๋ณด์ ๋ฌธ์ โ
์ด๋ฒ์ ์ ๊ท ๊ฐ๋ฐํ๋ ๊ธฐ๋ฅ์๋ ๋ณด์์ ์ํด ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ด์ฉ์ ์ํธํ๋ฅผ ํ๊ธฐ๋ก ํ๋ต๋๋ค.
Java์์ Hash ๊ฐ ์์ฑ์ ํ ๋ ๋ง์ด ์ฐ๋ ํด๋์ค๋ MessageDigest์ธ๋ฐ, ์ค๋์ ์ด ์น๊ตฌ๋ฅผ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๐MessageDigest
https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html
๊ณต์ API ๋ฌธ์ ๋ด์ฉ์ ์ธ์ฉํ์๋ฉด~
MessageDigest๋ ์ดํ๋ฆฌ์ผ์ด์
์์ SHA-1์ด๋ SHA-256 ๊ฐ์ digest ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ง๋๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด ์ค๋๋ค.
(๊ทธ๋์ ํด๋์ค ์ด๋ฆ์ด ์ด๋ฌ๊ตฐ์)
์์ ํฌ๊ธฐ(arbitrary-sized)๋ฅผ ์ฌ์ฉํ๊ณ , one-way ํด์ ํจ์๋ฅผ ๊ตฌํํด์, ๊ณ ์ ๊ธธ์ด์ ํด์ ๊ฐ์ ์ถ๋ ฅํด์ค๋๋ค.
MessageDigest md = MessageDigest.getInstance("SHA-256");
์ ์ธ์ ์์ ์์์ฒ๋ผ ํด์ค ์ ์๋๋ฐ, MessageDigest object๋ ์ด๊ธฐํ๋ ์ํ๋ก ์์์ด ๋ฉ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๋ ์ค์ํ ํจ์๊ฐ ๋ช ๊ฐ ์๋ต๋๋ค.
๐ getInstance("SHA-256")
md.getInstancd("SHA-256");
getInstance() ํ๋ผ๋ฏธํฐ์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ์ ์ ์ด์ฃผ๋ฉด, MessageDigest Object๊ฐ ์์ฑ ๋ฉ๋๋ค.
๋ง์ฝ ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ์ด ์ ํจํ์ง ์์ ๋ฐฉ์์ด๋ผ๋ฉด Exception์ผ๋ก NoSuchAlgorithmException๊ฐ ์ค๊ธฐ ๋๋ฌธ์, try-catch๋ก ์ฒ๋ฆฌํด์ค์๋ค.
๊ตฌํ ๊ฐ๋ฅํ ์๊ณ ๋ฆฌ์ฆ ์ข
๋ฅ๋ ์๋ ์ฌ์ดํธ์์ ํ์ธํ ์ ์์ต๋๋ค.
https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest
๐ update()
md.update(("์ํธํํ ๋ฌธ์์ด").getBytes())
update()๋ฅผ ์ฌ์ฉํด์ ํด์๋ฅผ ์์ฑํ๊ณ ์ํ๋ ๋ฌธ์์ด์ MessageDigest์ update ํด์ค๋๋ค.
update()๋ฅผ ํธ์ถํ ๋๋ง๋ค MessageDigest object์ ์ ์ฅ๋ digest ๊ฐ์ด ๊ฐฑ์ ์ด ๋ฉ๋๋ค
(reset() ํจ์๋ฅผ ํธ์ถํด์ ์ด๊ธฐํ ํด์ค ์๋ ์์)
๐ digest()
byte[] hashValue = md.digest();
update๋ ๋ฐ์ดํฐ๋ฅผ ํด์ ๊ฐ์ผ๋ก ์์ฑํด์ค๋๋ค. ๊ฒฐ๊ณผ ๊ฐ์ toString()์ผ๋ก ๋ฐ์ ์๋ ์๋ต๋๋ค.
'๐ Java&Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ธ startsWith()/endWith() ๋ฌธ์์ด์ ์์๊ณผ ๋ (0) | 2023.04.04 |
---|---|
@JsonProperty์ @JsonNaming (0) | 2023.03.17 |
HTTP Query Parameter์์ Arrary List ์ฌ์ฉ (0) | 2023.02.01 |
Spring Cron Expression (0) | 2023.01.25 |
StringUtils (0) | 2023.01.18 |