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())代码>
很遗憾,我不明白你问题的其余部分。密码(和密码文本)包含什么?