2 回答
TA贡献1812条经验 获得超5个赞
在 DES 加密中,它使用相同的密钥来加密和解密消息。因此,对于这两个操作,您需要具有相同的密钥。
在您的情况下,您使用了与密钥和密码相同的字符串。
public static String encryptPassword(String msg) {
try {
KeySpec keySpec = new DESKeySpec(msg.getBytes());
在上面的代码段中,当创建新的 DESKeySpec 对象时,您也需要传递密钥。
public static String decrypt(String msg) {
try {
KeySpec keySpec = new DESKeySpec(msg.getBytes());
即使在上面的解密方法中,您也必须传递在加密方法中使用的相同密钥。但是在这里你已经给出了编码字符串来生成密钥。那就是你出错的地方。
因此,我建议您通过添加一个更多参数作为键来更改方法参数,然后在两种方法中为键传递相同的值。
public static String encryptPassword(String msg, String keySp) {
try {
KeySpec keySpec = new DESKeySpec(keySp.getBytes());
}
public static String decrypt(String msg, String keySp) {
try {
KeySpec keySpec = new DESKeySpec(keySp.getBytes());
}
我只包含了需要更改的行。
您可以通过以下方式调用这些方法,
String key = "!QAZxdr5";
String password = "!QAZxdr5";
String encriptedPassword = encryptPassword(password, key);
System.out.println(decrypt(encriptedPassword, key));
添加回答
举报