Arjun2016 Ответов: 3

Напишите строку в зашифрованном виде в реестре windows с помощью java


Всем Привет,

Пожалуйста, сделайте все необходимое для этого:

Напишите строку в зашифрованном виде в реестре Windows с помощью java. и иметь возможность хранить несколько значений в реестре windows


С уважением,

Арджун

Что я уже пробовал:

Я пробовал с Java.утиль.префов.Предпочтения, но это не сработало.

Richard MacCutchan

Что - это не сработало." значит?

3 Ответов

Рейтинг:
1

Patrice T

Плохой вопрос: Ваш вопрос-это несколько вопросов

- Как зашифровать строку ?
- подразумевается: как расшифровать строку ?
- подразумевается: какой метод шифрования/дешифрования ?
- Как сохранить строку в реестре ?
- подразумевается: как получить строку в реестре ?
- Как сохранить несколько значений в реестре ?

Расскажите, в чем ваша проблема, покажите свой код.


Arjun2016

Мои вопросы таковы: как сохранить строку в реестре, и мне нужно сохранить несколько значений в реестре.
Шифрование / дешифрование строки отлично работает с моим образцом кода.

Я уже пробовал с этим кодом:
http://www.javacoderanch.com/how-to-read---write-data-in-windows-registry.html

Рейтинг:
0

Arjun2016

Привет Ребята,


я работал над этим образцом приложения, используя JNA jar, он работает. Но мне нужно добиться того же самого без использования внешнего jar "создать раздел реестра и записать записи в реестр". Любая помощь в этом деле!

вот мой код:

import com.sun.jna.platform.win32.Advapi32Util;
import static com.sun.jna.platform.win32.WinReg.HKEY_CURRENT_USER;
import java.util.Scanner;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

public class Test {
	private static String encryptionKey;
	
	public Test(String encryptionKey)
    {
        Test.encryptionKey = encryptionKey;
    }	
	private static void SetEncryptiontKey(String string) {
		// TODO Auto-generated method stub
		Test.encryptionKey = string;
	}
	
    public String encrypt(String plainText) throws Exception
    {
        Cipher cipher = getCipher(Cipher.ENCRYPT_MODE);
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());

        return Base64.encode(encryptedBytes);
    } 

    private Cipher getCipher(int cipherMode)
            throws Exception
    {
        String encryptionAlgorithm = "AES";
        SecretKeySpec keySpecification = new SecretKeySpec(
                encryptionKey.getBytes("UTF-8"), encryptionAlgorithm);
        Cipher cipher = Cipher.getInstance(encryptionAlgorithm);
        cipher.init(cipherMode, keySpecification);

        return cipher;
    }
    
    public static void main(String[] args) {
    	Scanner in = new Scanner(System.in);
    	SetEncryptiontKey("MZygpewJsCpRrfOr");
    	
    	System.out.println("Enter User Name\n");
    	String Username = in.nextLine();
    	
    	System.out.println("Enter Password\n");
    	String Password = in.nextLine();
    	    	
    	Test advancedEncryptionStandard = new Test(
            encryptionKey);
    	String cipherText = null;
		try {
			cipherText = advancedEncryptionStandard.encrypt(Password);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	//System.out.println(Password);
    	//System.out.println(cipherText);
    	
    	Advapi32Util.registryCreateKey(HKEY_CURRENT_USER, "Software\\Dell Configuration");
       // System.out.println(Advapi32Util.registryKeyExists(HKEY_CURRENT_USER, "Software"));
        Advapi32Util.registrySetStringValue
            (HKEY_CURRENT_USER, "Software\\Dell Configuration", "Username", Username);
        Advapi32Util.registrySetStringValue
        (HKEY_CURRENT_USER, "Software\\Dell Configuration", "Password", cipherText);
    }	

}