все.Я в основном пытаюсь зашифровать и расшифровать пароль типа String.Я получаю сообщение об ошибке javax.crypto.IllegalBlockSizeException: длина ввода должна быть кратна 8 при расшифровке с использованием шифра с добавлением.
Я пытаюсь сделать другие алгоритмы с указанным заполнением, например, AES / CBC /NoPadding.но получая другую ошибку, которая является java.security.InvalidKeyException: неверная длина ключа AES: 5 байт.
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class Encrpyt {
public static void main(String[] args) throws Exception
{
// TODO code application logic here
String userName="jimmy";
String password="chen";
String encryptedPassword=encrypt(password,userName);
System.out.println("this is encrypted password:"+encryptedPassword+"");
String decrptedPassword=decrypt(encryptedPassword,userName);
System.out.println("this is decrpted password is :"+decrptedPassword);
}
public static String encrypt(String strClearText,String strKey) throws Exception{
String strData="";
try {
SecretKeySpec skeyspec=new SecretKeySpec(strKey.getBytes(),"Blowfish");
Cipher cipher=Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, skeyspec);
byte[] encrypted=cipher.doFinal(strClearText.getBytes());
strData=new String(encrypted);
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
}
return strData;
}
public static String decrypt(String strEncrypted,String strKey) throws Exception{
String strData="";
try {
SecretKeySpec skeyspec=new SecretKeySpec(strKey.getBytes(),"Blowfish");
Cipher cipher=Cipher.getInstance("Blowfish");
cipher.init(Cipher.DECRYPT_MODE, skeyspec);
byte[] decrypted=cipher.doFinal(strEncrypted.getBytes());
strData=new String(decrypted);
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
}
return strData;
}
}