2016-04-03 18 views
0

私は、(RSAアルゴリズムを使用して)渡されたユーザーの配列のキーのペアを生成する関数を持っています。しかし、出力を印刷しようとすると、最後の要素だけが印刷されているように見えます。私が間違っていることを理解できないようです。Arraylistは最後に追加された要素のみを出力します

キーを生成し、arraylistを返す関数は次のとおりです。 - ユーザーの文字列配列をパラメータとして受け取ります。ここで

public static ArrayList<User> generateUserKeys(String [] users){ 

    ArrayList <User> usrs = new ArrayList<User>(); 

    KeyPair k; 

    for (int i=0;i<users.length;i++) 
    { 

     k=generateKeyPair(); 

     usrs.add(new User(users[i],k.getPublic(),k.getPrivate())); 
     System.out.println("User Name is :"+ usrs.get(i).getUserName()); 
     System.out.println("Public Key is :"+ usrs.get(i).getPublicKey()); 
     System.out.println("Private Key is :" + usrs.get(i).getPrivateKey()); 



    } 


    return usrs; 

} 

は、私はそれをテストしてる方法です: -

String [] users = 
{"[email protected]","[email protected]","[email protected]","[email protected]"}; 

ArrayList<User> usrz= generateUserKeys(users); 
Iterator<User> itr = usrz.iterator(); 

while(itr.hasNext()) 
{ 
    System.out.println(itr.next().getUserName()); 

} 

私が受けてるの出力は、私はあなたのgenerateUserKeysメソッドのコード内のすべての問題を見haven't

[email protected] 
[email protected] 
[email protected] 
[email protected] 
+0

は、我々はユーザーの配列を見ることができますか? –

+0

すべての出力を投稿できますか? – Natecat

+0

ここに、ユーザーのコード配列 'String [] users = {"[email protected]"、 "[email protected]"、 "[email protected]"、 "tannerh @ tcd.ie "}; –

答えて

0

です。おそらくUserクラスがOKではないでしょうか?Userクラスの中でユーザー名の値を "[email protected]"として設定しましたか?

他のSystem.out.println(...)行の結果はどうなりますか? "User Name is:[email protected]"も4回印刷する必要があります。

0

私はそれをそのまま実行しようとしましたが、明らかに、UserまたはKeyPairGeneratorにどのようなコードが使用されているかという点についてはほとんど想定されていません。ここに私のコードがあり、私は問題で説明されているような出力を得られませんでした。静的なものと何か他のものとの関連があるかどうかを教えてもらえますか? @PaulBoddington - あなたがすでに言ったことを判断するためにこれを扱わないでください。私は私が行ったテストの基礎にこれを掲示しています。警告:私はここで間違っている可能性があります。

ソースコード:

import java.security.KeyPair; 
import java.security.KeyPairGenerator; 
import java.security.NoSuchAlgorithmException; 
import java.security.PrivateKey; 
import java.security.PublicKey; 
import java.util.ArrayList; 
import java.util.Iterator; 

class User { 
    private String userName; 
    private PublicKey pubKey; 
    private PrivateKey privKey; 

    public User(String string, PublicKey public1, PrivateKey private1) { 
     userName = string; 
     pubKey = public1; 
     privKey = private1; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public String getPublicKey() { 
     return pubKey.toString(); 
    } 

    public String getPrivateKey() { 
     return privKey.toString(); 
    } 
} 

public class RSAKeyGenExample { 

    public static ArrayList<User> generateUserKeys(String[] users) throws NoSuchAlgorithmException { 
     ArrayList<User> usrs = new ArrayList<User>(); 

     KeyPair k; 
     KeyPairGenerator keyGen = null; 
     keyGen = KeyPairGenerator.getInstance("RSA"); 

     for (int i = 0; i < users.length; i++) { 
      k = keyGen.generateKeyPair(); 

      usrs.add(new User(users[i], k.getPublic(), k.getPrivate())); 
      System.out.println("User Name is :" + usrs.get(i).getUserName()); 
      System.out.println("Public Key is :" + usrs.get(i).getPublicKey()); 
      System.out.println("Private Key is :" + usrs.get(i).getPrivateKey()); 
     } 
     return usrs; 
    } 

    public static void main(String[] args) throws NoSuchAlgorithmException { 
     String[] users = { "[email protected]", "[email protected]", "[email protected]", "[email protected]" }; 

     ArrayList<User> usrz = generateUserKeys(users); 

     Iterator<User> itr = usrz.iterator(); 
     while (itr.hasNext()) { 
      System.out.println(itr.next().getUserName()); 
     } 
    } 
} 

+0

私はちょうどあなたのポストを読んで、あなたが実際にコードを見ていなくても)ユーザークラスのフィールドから静的な削除を提案していたのを見てください:)私は私がやることであるとは思わなかったようです。それで、なぜ私はハッサンと同じ出力を得られなかったのかを説明します。それ以上のアクションは必要ありません。完全なコードを持つようにここにコードを残しておきます。 – Learner

関連する問題