2

このコードはhttp://www.roseindia.net/answers/viewqa/Java-Beginners/7551-encryption-and-decryption.htmlから採用されています

しかし、私はいくつかのエラーがあります。(str) では、変数を開始するように言い続けます。そして、私がそれを修正したとき

文字列 st,str = null;

そして実行すると、「エラー:メインクラスのtryoutEncryption.encryptingfileが見つからないか、ロードできませんでした」というメッセージが表示されます

パッケージ tryoutEncryption;

import java.io.*;
import java.security.*;
import javax.crypto.*;

class EncryptAndDecrypt {

public static void main (String[] args) throws Exception{
KeyPairGenerator keygenerator = KeyPairGenerator.getInstance("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keygenerator.initialize(1024, random);

KeyPair keypair = keygenerator.generateKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.ENCRYPT_MODE, publicKey);
BufferedReader br=new BufferedReader(new FileReader(new File("C:\\Users\\Desktop\\testing.txt")));
String st,str;
while((st=br.readLine()) != null)   {
    str+=st+" ";
}


byte[] cleartext = null;
cleartext = str.getBytes();
byte[] ciphertext = null;
ciphertext = cipher.doFinal(cleartext);
System.out.println("the encrypted text is: " + ciphertext.toString());

cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] cleartext1 = cipher.doFinal(ciphertext);
System.out.println("the decrypted cleartext is: " + new String(cleartext1));
}
}
4

5 に答える 5

1

「エラー:メインクラスのtryoutEncryption.encryptingfileが見つからないか、ロードできませんでした」というメッセージが表示されます

これは、プログラムを起動しようとしている方法に問題があるという印象を与えます。クラス名はEncryptAndDecryptですが、エラーは を指定していることを示唆していますencryptingfile

また、批判:メソッドでスローされた例外を宣言することは、一般的に悪い習慣です
maintry/catch ブロックを設定し、記述しているコードによってスローされる例外の種類を理解することを常に実践する必要があります。

于 2012-07-30T03:57:16.987 に答える
0

エラー「エラー:メインクラスtryoutEncryption.encryptingfileが見つからないかロードできませんでした」の場合、javaコマンドで実行する必要のあるJavaクラスのスペルが間違っているか(コマンドラインからの場合)、いくつかを使用していることを意味しますIDEの破損したランタイム構成(使用している場合)。

また、1行で2つの変数を宣言するのは非常に悪いスタイルです。入力する必要のあるコードの量を節約し、行数を減らすためにそれを奨励する人もいますが、そうすると、初期化されていない変数など、検出が難しいバグが発生する可能性があります。また、1行で複数の変数を宣言することは、読みにくいコードであると主張します(雑然としすぎます)。あなたの状況のた​​めに、私はお勧めします:

String st = "";
String str = "";

または、呼び出しstによって設定されるため、初期化しないままにしbr.readLine()ます。君による。NullPointerExceptionsを回避するために、宣言されたすべての文字列を「」に設定することを好みます...しかし、状況によっては、通常これを行うだけです。

于 2012-07-30T04:01:22.667 に答える
0

確かにあなたは欲しい:

String st;
String str = "";
于 2012-07-30T03:48:14.223 に答える
0

@こんにちは私はあなたのコードを試してみましたが、うまくいきました。私たちがあなたを助けることができるように、あなたが得ている例外トレースを親切に教えてください.

于 2012-07-30T04:48:04.323 に答える