2017-02-23 8 views
0

ハッシュのハッシュnのハッシュを生成する簡単な再帰的なメソッド、つまりハッシュチェーンを実装しようとしています。これは私がこれまで持っていたものです。Javaの再帰的メソッドを使用した暗号化ハッシュチェーン

import java.io.UnsupportedEncodingException; 

public class RecursiveHash { 
    public static String generateHashChain(int hash_time, String password) throws UnsupportedEncodingException{ 
     hash_time--; 
     if (hash_time == 1) 
      return Hash.generateHash(password); 
     return generateHashChain(hash_time,password); 
    } 

    public static void main(String[] args) { 
     try { 
      System.out.println(generateHashChain(2,"hello")); 
      System.out.println("Test"); 
      System.out.println(Hash.generateHash((Hash.generateHash("hello")))); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

Hash.generateHashは、ハッシュを生成するユーティリティメソッドです。 hash_timeは、ハッシュをハッシュしたい回数です。しかし、私が上記のようにテストすると(2回ハッシュ)私は得る

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 
Test 
d7914fe546b684688bb95f4f888a92dfc680603a75f23eb823658031fff766d9 

回答は同じであると思います。何が間違っているのかに関するアイデアはありますか?

答えて

1
System.out.println(generateHashChain(2,"hello")); 

これは、2でプロセスを開始します。

hash_time--; 

1にあります。それ

if (hash_time == 1) 
     return Hash.generateHash(password); 

ので、一度だけハッシュん1です。

public static String generateHashChain(int hash_time, String password) throws UnsupportedEncodingException{ 
    if (hash_time == 1) 
     return Hash.generateHash(password); 
    return Hash.generateHash(generateHashChain(hash_time - 1,password)); 
} 

あなたの問題を解決するために、

関連する問題