質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

846閲覧

vb2015とJAVAのハッシュ値の計算の違いについて

sgrax30527

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/01/19 12:36

javaのプログラムで入力されたパスワードをMessageDigestを使用してハッシュ値にしているプログラムがあります。
これをVB2005でも同じデータから同じハッシュ値に計算をしたいのですが値が合わない
状態です。

java側のソースは下記です。
try {
String password;
String salt;
byte objAByte[];
byte objBByte[];
password ="********";
salt ="63204";

MessageDigest md = MessageDigest.getInstance("SHA-256"); System.arraycopy(objAByte,0,objCByte,0,objAByte.length); System.arraycopy(objBByte,0,objCByte,objAByte.length, objBByte.length); //md.update(password.getBytes("UTF-8")); //md.update(salt.getBytes("UTF-8")); byte objByte[]; objByte = md.digest(); } catch (NoSuchAlgorithmException ea) { } catch (UnsupportedEncodingException ea) { } } private static String bin2hex(byte[] data) { StringBuffer sb = new StringBuffer(); for (byte b : data) { String s = Integer.toHexString(0xff & b); if (s.length() == 1) { sb.append("0"); } sb.append(s); } return sb.toString(); }

VB側のソースは下記です。
Dim objSecByte() As Byte
Dim strSignerutWork As String
Dim strSecret As String = ”****”

objSecByte = System.Text.Encoding.UTF8.GetBytes(strSecret) Dim objsha256 As New System.Security.Cryptography.HMACSHA256() Dim objSigByte() As Byte Dim objSigWorkByte() As Byte Dim result As New System.Text.StringBuilder() strSignerutWork = "63204" objSigByte = System.Text.Encoding.UTF8.GetBytes(strSignerutWork) Dim objTest(objSigByte.Length + objSecByte.Length - 1) As Byte objSecByte.CopyTo(objTest, 0) objSigByte.CopyTo(objTest, objSecByte.Length) objSigWorkByte = objsha256.ComputeHash(objTest) For inti As Integer = 0 To objSigWorkByte.Length - 1 result.AppendFormat("{0:X2}", objSigWorkByte(inti)) Next

ハッシュ値の計算後16進数に変換した値は
JAVA側は751b3516046fe1591601da0308ed4be4c649029f7b69550c6d2afd4c2f441508
VB側は207E27FCFBCE78212712DDB43F05D8A765391E8B4D22A2B04CCE6F9FB863C6FE
になっています。

そもそもMessageDigestとCryptographyでハッシュ計算自体が違うのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umyu

2018/01/19 12:43

Java側でmd.updateがコメントされていますが、実際のソースコードもこうなってますか?
sgrax30527

2018/01/20 02:01

実際のソースもコメントしてます。バイトを連結させてからハッシュ値を計算してます。
guest

回答1

0

ベストアンサー

Mac hmacSha256 = Mac.getInstance("hmacSHA256");

JAVA -HMACSHA256 -stackoverflow

SHA-256 と HMAC-SHA256は似て非なるもの

投稿2018/01/19 12:48

編集2018/01/19 12:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sgrax30527

2018/01/20 02:05

ご回答ありがとうございます。無事解決できました。 VB側のソースをSHA256に直して計算しなおしたら数値合いました。 下記VB側の修正後のソース Dim objSecByte() As Byte Dim strSignerutWork As String Dim strSecret As String = ”****” objSecByte = System.Text.Encoding.UTF8.GetBytes(strSecret) Dim objsha256 As System.Security.Cryptography.SHA256 = Security.Cryptography.SHA256Managed.Create() Dim objSigByte() As Byte Dim objSigWorkByte() As Byte Dim result As New System.Text.StringBuilder() strSignerutWork = "63204" objSigByte = System.Text.Encoding.UTF8.GetBytes(strSignerutWork) Dim objTest(objSigByte.Length + objSecByte.Length - 1) As Byte objSecByte.CopyTo(objTest, 0) objSigByte.CopyTo(objTest, objSecByte.Length) objSigWorkByte = objsha256.ComputeHash(objTest) For inti As Integer = 0 To objSigWorkByte.Length - 1 result.AppendFormat("{0:X2}", objSigWorkByte(inti)) Next Return result.ToString.ToLower
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問