kobari
دوشنبه 25 بهمن 1389, 12:08 عصر
سلام
من يك متد براي password decryption داشتم كه بخوبي كار مي كرد. بتازگي يك برنامه تخت ويندوز نصب كردم كه در regional and language options تغيراتي ايچاد كرد و از آن پس برنامه من موقع اجرا دچار Exception ميشه. احتمالآ با برگرداندن ستينگهاي regional مشكل برطرف ميشه. ولي من دنبال اين هستم كه برنامه بدون وابستگي به منابع ويندوز كار كنه . كد برنامه و اسنثناء توليد شده بشكل زير است، اگه كسي ايده اي براي حل آن داره ممنون ميشم:
public static String getDecryptedPassword(String encrypted) throws Exception{
if(encrypted == null)
return null;
SecretKeySpec skeySpec = new SecretKeySpec(EncodedKey.getDefaultByteEncodedKey( ), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal( encrypted.getBytes());
return new String(decrypted);
}
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(Da shoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at com.sana.utils.PasswordPanel.getDecryptedPassword( PasswordPanel.java:
276)
...
من يك متد براي password decryption داشتم كه بخوبي كار مي كرد. بتازگي يك برنامه تخت ويندوز نصب كردم كه در regional and language options تغيراتي ايچاد كرد و از آن پس برنامه من موقع اجرا دچار Exception ميشه. احتمالآ با برگرداندن ستينگهاي regional مشكل برطرف ميشه. ولي من دنبال اين هستم كه برنامه بدون وابستگي به منابع ويندوز كار كنه . كد برنامه و اسنثناء توليد شده بشكل زير است، اگه كسي ايده اي براي حل آن داره ممنون ميشم:
public static String getDecryptedPassword(String encrypted) throws Exception{
if(encrypted == null)
return null;
SecretKeySpec skeySpec = new SecretKeySpec(EncodedKey.getDefaultByteEncodedKey( ), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal( encrypted.getBytes());
return new String(decrypted);
}
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(Da shoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at com.sana.utils.PasswordPanel.getDecryptedPassword( PasswordPanel.java:
276)
...