2015-10-29 4 views
0

Мне нужно перевести старый код, написанный в VisualBasic на Java. VB код:Перевести код кодировки с VB на Java

Dim mySHA256 As Object 
Dim asc As Object 
Dim TextToHash() As Byte 
Dim mybytes() As Byte 
Dim objXML As Object 
Dim objNode As Object 
Dim strResult As String 

Set asc = CreateObject("System.Text.UTF8Encoding") 
Set mySHA256 = CreateObject("System.Security.Cryptography.SHA256Managed") 

TextToHash = asc.GetBytes_4(sTextToHash) 
mybytes = mySHA256.ComputeHash_2(TextToHash) 

Set objXML = CreateObject("MSXML2.DOMDocument") 
Set objNode = objXML.createElement("b64") 

objNode.DataType = "bin.base64" 
objNode.nodeTypedValue = arrData 
strResult = objNode.Text 

Это выглядит совершенно волшебным для меня. Мне нужно иметь тот же хеш (strResult) в Java. Моя Java выглядит так:

byte[] bytes = text.getBytes("UTF-8"); 
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); 
byte[] hash = messageDigest.digest(bytes); 

StringBuffer hexString = new StringBuffer(); 
for(int i = 0; i < hash.length; i++) 
{ 
    String hex = Integer.toHexString(0xff & hash[ i ]); 
    if(hex.length() == 1) 
    { 
     hexString.append('0'); 
    } 
    hexString.append(hex); 
} 

Кто-нибудь знает, как это сделать?

+0

Post/объяснить свой Java код, который не работал – Reimeus

+0

Что было не так с вашим кодом Java? как сказал Реймеус, разместите свой Java-код, чтобы мы могли помочь вам – jMounir

ответ

0

Я нашел решение. Правильный код Java должен выглядеть следующим образом:

byte[] bytes = text.getBytes("UTF-8"); 
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); 
byte[] hash = messageDigest.digest(bytes); 
String result = Base64.getEncoder().encodeToString(hash); 
Смежные вопросы