Как расшифровать пароль из зашифрованного пароляJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как расшифровать пароль из зашифрованного пароля

Сообщение Anonymous »

В настоящее время мы шифруем пароли, вводимые пользователем на странице входа, и сохраняем их в базе данных. Здесь я разрабатываю новую страницу входа для внутренних целей и повторно использую то же имя пользователя и зашифрованный пароль. Если пользователь авторизован, ему будет разрешен доступ к отчетам. Здесь мой вопрос: как я могу получить секретный ключ, который они использовали для шифрования. Хотел бы использовать тот же ключ для расшифровки пароля, и я могу продолжить свою логику.

Это код, который мы используем для шифрования метода шифрования пароля.

Код: Выделить всё

user = userRemote.loginUser(userName, new String(EncryptDecrypt.storePassword(password),"Cp1252"));

Here password is Password entered in the login page.
Это метод шифрования пароля.

Код: Выделить всё

final static byte[] salt = {
(byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
(byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
};
final static int count = 1;

public static byte[] storePassword(char[] password) throws InternalException {
PBEKeySpec pbeKeySpec;
PBEParameterSpec pbeParamSpec;
SecretKeyFactory keyFac;
byte[] ciphertext = null;
try {
// Install SunJCE provider
Provider sunJce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunJce);

// Create PBE parameter set
pbeParamSpec = new PBEParameterSpec(salt, count);

pbeKeySpec = new PBEKeySpec(password);
keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);
// Create PBE Cipher
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");

// Initialize PBE Cipher with key and parameters
pbeCipher.init(Cipher.ENCRYPT_MODE, pbeKey, pbeParamSpec);

// Our cleartext
byte[] cleartext = (new String(password)).getBytes("Cp1252");

// Encrypt the cleartext
ciphertext = pbeCipher.doFinal(cleartext);
} catch (BadPaddingException ex) {
log.error("EncryptDecrypt: " + ex.getMessage());
throw new InternalException(ex.getMessage());
} catch (Exception ex) {
log.error("EncryptDecrypt: " + ex.getMessage());
throw new InternalException(ex.getMessage());
}
return ciphertext;
}
Это класс, который я использую для расшифровки пароля. Здесь у меня есть только зашифрованный пароль в качестве входных данных для расшифровки пароля. Например, •Ä0BÒ¦O, поэтому я использую его для генерации секретного ключа и его расшифровки. Но исключение ниже.
java.security.spec.InvalidKeySpecException: пароль не ASCII

Код: Выделить всё

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

public class DecryptPassword {

public static void main(String[] args) {
String decryptedStr = checkPassword("•Ä0BÒ¦O");
System.out.println("decryptedStr : "+decryptedStr);
}

final static byte[] salt = {
(byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
(byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
};

final static int count = 1;

static String decryptedPassword = "";

public static String checkPassword(String encryptedPassword) {
PBEKeySpec pbeKeySpec;
PBEParameterSpec pbeParamSpec;
SecretKeyFactory keyFac;
try {
// Install SunJCE provider
Provider sunJce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunJce);
// Create PBE parameter set
pbeParamSpec = new PBEParameterSpec(salt, count);
pbeKeySpec = new PBEKeySpec(encryptedPassword.toCharArray());
keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);
// Create PBE Cipher
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
// Initialize PBE Cipher with key and parameters
pbeCipher.init(Cipher.DECRYPT_MODE, pbeKey, pbeParamSpec);
byte[] decrypted = pbeCipher.doFinal(encryptedPassword.getBytes());
decryptedPassword = decrypted.toString();
} catch (BadPaddingException ex) {
System.out.println("EncryptDecrypt: " + ex.getMessage());
} catch (Exception ex) {
System.out.println("EncryptDecrypt: " + ex.getMessage());
}
return decryptedPassword;
}

}
Здесь я должен успешно расшифровать пароль, но нет. Может ли кто-нибудь помочь мне, чего здесь не хватает? Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/557 ... d-password
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»