0

私はコードを持っています:

String Password = PasswordText.getText();
SecretKeySpec SKC = new SecretKeySpec(Password.getBytes(), "DES");
PBEKeySpec PKS = new PBEKeySpec(Password.toCharArray());
SecretKeyFactory SKF = null;
try{
    SKF = SecretKeyFactory.getInstance("DES");
} catch(NoSuchAlgorithmException AlgorithmFail) {
    return;
}
SecretKey CipherKey = null;
try{
    CipherKey = SKF.generateSecret(SKC);
} catch(InvalidKeySpecException KeyFail) {
    return;
}

最後のステートメントで、「不適切なキー指定」という失敗を引き起こします。その失敗により、最後のステートメントで PKS の代わりに SKC を使用しました。私が使用するコード例は、インターネットから提供します。私の間違いに私を蹴ってください。すべての例で、 but ステートメントはまったく機能します。

SecretKey MyKey = SecretKeyFactory.getInstance("DES")
                    .generateSecret(new PBEKeySpec(Password.toCharArray()));

私を助けることができますか? お願いします!!!

4

3 に答える 3

1

これらのキースペックを好きなように組み合わせて一致させることはできません。残念ながら、ドキュメントは非常に紛らわしく、これを行う方法が不明確です。Sun プロバイダの SecretKeyFactory では、DES キーをDESKeySpecインスタンスで指定する必要があるようです。DESKeySpec SKC = new DESKeySpec(Password.getBytes());

残念ながら、あなたの質問の残りの部分がわかりません。

于 2013-01-15T22:52:26.257 に答える
1

DES 暗号化で正常に動作するこのチュートリアルをご覧ください

http://www.avajava.com/tutorials/lessons/how-do-i-encrypt-and-decrypt-files-using-des.html

于 2013-01-15T08:43:29.217 に答える
0

Bouncy Castle をプロバイダーとして追加できます。それから加えて:

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

あなたの例の冒頭に。そして使用:

secretKeyFactory = SecretKeyFactory.getInstance("DES", "BC");

プロジェクトをjarに依存させる必要がありますbcprov(おそらくbcprov-jdk15on-147.jar)。ここからダウンロードしてください。

于 2013-01-15T08:57:38.860 に答える