[HackerRank]Java MD5

題目描述

MD5(訊息摘要演算法5Message-Digest algorithm 5)是一個廣泛使用的密碼學雜湊函數,可以計算出128位元的雜湊數值,常用於儲存密碼和確保檔案正確性。

給定一個含有數字英文字母的字串s,當作是一個密碼,請計算並輸出其經過MD5編碼過後的值。

原題網址

https://www.hackerrank.com/challenges/java-md5

輸入格式

輸入一個含有數字英文字母的字串s,字串長度在6到20之間(包含6和20)。

輸出格式

輸出字串s經過MD5編碼過後的值。

範例輸入1

HelloWorld

範例輸出1

68e109f0f40ca72a15e05cc22786f8e6

範例輸入2

Javarmi123

範例輸出2

2da2d1e0ce7b4951a858ed2d547ef485

解題概念

利用java.security套件提供的MessageDigest類別,可以協助進行安全性相關的演算法計算,其中當然也包括了MD5的運算。使用MessageDigest類別的「getInstance」方法可以指定要產生哪種演算法MessageDigest物件實體,接著呼叫MessageDigest物件的「digest」方法便可以計算從參數傳入的byte陣列,所以必須要將輸入的字串使用UTF-8編碼轉成byte陣列來作為參數傳入。

MessageDigest物件的「digest」方法會直接將計算出來的MD5結果以byte陣列的型態回傳,題目要求要以16進制的方式輸出128位元的MD5數值,所以還需要再寫一個簡單的轉換程式將byte陣列中的每個byte元素轉換成擁有兩位數(如果換算後只有一位數,還需要在左邊補0)16進制的文字字串,並串接在一起。最後才可以將這個16進制的128位元數字字串輸出。

參考答案

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章