Java密码密钥转换无法正常工作

Java密码密钥转换无法正常工作,java,key,encryption,Java,Key,Encryption,我有密码: 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"

我有密码:

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;
}
在最后一句话中,我导致了失败:“不适当的密钥规范”。该故障还导致我在最后一条语句中使用SKC而不是PKS。我从互联网上给出的代码示例。请把我的错误归咎于我。在所有示例中,但语句确实起作用:

SecretKey MyKey = SecretKeyFactory.getInstance("DES")
                    .generateSecret(new PBEKeySpec(Password.toCharArray()));
你能帮我吗?

看看本教程,它可以很好地使用DES加密


您可以添加Bouncy Castle作为提供者。然后添加:

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
到你例子的开头。和使用:

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

您需要使项目依赖于
bcprov
jar(可能是
bcprov-jdk15on-147.jar
)。从下载。

您不能随意混合和匹配这些按键。不幸的是,这些文件非常混乱,不清楚如何做到这一点。Sun提供程序的SecretKeyFactory似乎要求由实例指定DES密钥:
DESKeySpec SKC=new DESKeySpec(Password.getBytes())


很遗憾,我不明白你问题的其余部分。

密码(和密码文本)包含什么?