Ответы пользователя по тегу Java
  • Как исправить ошибку при расшифровке AES?

    MinimaJack
    @MinimaJack
    не тот пароль в расшифровке скорее всего...
    package custom;
    import java.math.BigInteger;
    import java.security.SecureRandom;
    
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    
    public class Test {
    	private static byte[] password = new String("password").getBytes(); // this.password =
    											// editText.getBytes();
    	static final byte[] ivBytes = { '6', 'g', '6', 'o', 'd', 'a', '0', 'u',
    			'4', 'n', 'w', 'i', '6', '9', 'i', 'j' };
    
    	public static byte[] encrypt(String text) throws Exception {
    		byte[] clear = text.getBytes("UTF-8");
    		IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
    
    		KeyGenerator kgen = KeyGenerator.getInstance("AES");
    		SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
    		sr.setSeed(password);
    		kgen.init(128, sr); // 192 and 256 bits may not be available
    		SecretKey skey = kgen.generateKey();
    		byte[] key = skey.getEncoded();
    
    		SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
    		Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    		cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivSpec);
    		byte[] encrypted = cipher.doFinal(clear);
    		return encrypted;
    	}
    
    	public static byte[] decrypt(byte[] encrypted) throws Exception {
    		IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
    
    		KeyGenerator kgen = KeyGenerator.getInstance("AES");
    		SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
    		sr.setSeed(password);
    		kgen.init(128 , sr); // 192 and 256 bits may not be available
    		SecretKey skey = kgen.generateKey();
    		byte[] key = skey.getEncoded();
    
    		SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
    		Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    		cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec);
    		return cipher.doFinal(encrypted);
    	}
    
    	public static void main(String[] args) {
    		try {
    			byte[] text = Test.encrypt("Test - тест - 123");
    			System.out.println(String.format("%X", new BigInteger(1, text)));
    			System.out.println(new String(Test.decrypt(text),"UTF-8") );
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    Ответ написан
  • Почему у JAVA-проектов настолько разная структура папок?

    MinimaJack
    @MinimaJack
    build - по умолчанию в эклипсе является каталогом для скомпилированных классов, если же проект maven - /target/classes.
    META-INF опять же..может вообще не существовать, а генерироваться при сборке...
    В общем: структура коррелирует с типа проекта. При этом сохраняется возможность "своего" размещения
    Почитать - на каждый проект, свой файл сборки. Вот именно в него и заглянуть, что бы понять почему именно так.
    Ответ написан
    Комментировать