2014-07-21 32 views
-2

我的任務是查找祕密消息,我相信我將不得不XOR不同的密文,但我不知道如何將密文存儲在Java中的變量中。如何在Java中存儲hexencoded密文

我找不到如何存儲密文消息。我以爲我會通過聲明它這樣做的一個字符串(顯然是錯誤的)

String firstmessage = "315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5b403b510d0d0455468aeb98622b137dae857553ccd8883a7bc37520e06e515d22c954eba5025b8cc57ee59418ce7dc6bc41556bdb36bbca3e8774301fbcaa3b83b220809560987815f65286764703de0f3d524400a19b159610b11ef3e"

我如何可以存儲在Java中這個值?

+1

你知道字符串文字放在雙引號之間嗎?除此之外,您需要將密文轉換爲某些位,即您需要將其存儲在字節數組byte []中。 – A4L

+0

這怎麼可以存儲爲字節數組?通過聲明byte [] firstmessage = byte []。數組中有多少個元素?你將如何使用for循環初始化數組中的元素? – MichaelGofron

+0

如果你的輸入是一個十六進制字符串,那麼每個字符代表4位,一個「字節」可以保存8位。因此,對於長度爲「n」的文本,您將需要一個長度爲「n/2」的字節數組,請參閱此問題(http://stackoverflow.com/a/140861/1113392)瞭解如何執行轉換。 – A4L

回答

0

奇怪的是,Java的還是不處理字節等,最好的辦法主要包一包十六進制解碼器是使用十六進制解碼器from Guava之一,Apache Commons CodecBouncy Castle provider (the "lightweight API")中的內部類。

當然,如果你想要你也可以使用內部DatatypeConverter.parseHexBinary()方法,但是它在javax中是一個非常不相關的XML包。否則,您可以使用定義的其他方法here

+0

那麼,他似乎並不需要一個十六進制編碼器,並且Long.parseLong(String,int)將字符十六進制解析爲長整型值就好了。一個人只需要圍繞它建立一個循環。 –

+0

@HotLicks「我找不到如何存儲密文消息」...到異或。你是怎麼得出這樣的結論的:這應該是一個十六進制解碼器的長期價值? +簡單的錯字,感謝downvote。 –

相關問題