Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AES加密和解密Java_Java_Encryption_Aes - Fatal编程技术网

AES加密和解密Java

AES加密和解密Java,java,encryption,aes,Java,Encryption,Aes,我正在使用AES加密字符串,并希望在另一台电脑上解密。如果我在同一台电脑上执行加密和解密,则加密和解密工作正常。但对于在另一台电脑上解密,我的加密算法将生成一个“密码”,该密码与密钥一起在另一端解密。我不知道如何将密码传输到另一端 这是我的密码 public class AESCrypt { static String plainText; static byte[] plainBytesDecrypted = new byte[1024]; static byte[

我正在使用AES加密字符串,并希望在另一台电脑上解密。如果我在同一台电脑上执行加密和解密,则加密和解密工作正常。但对于在另一台电脑上解密,我的加密算法将生成一个“密码”,该密码与密钥一起在另一端解密。我不知道如何将密码传输到另一端

这是我的密码

 public class AESCrypt {

    static String plainText;
    static byte[] plainBytesDecrypted = new byte[1024];
    static byte[] cipherBytes = new byte[1024];
    static SecretKey key;
    static Cipher cipher;

    public AESCrypt() throws NoSuchAlgorithmException {
        KeyGenerator generator = KeyGenerator.getInstance("AES");

        generator.init(128);
        key = generator.generateKey();

    }

    public static byte[] encryption(String plainBytes) {

        try {
            Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

            cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
            cipher.init(Cipher.ENCRYPT_MODE, key);
            cipherBytes = cipher.doFinal(plainBytes.getBytes());
            System.out.println("Encrypted data : " + new String(cipherBytes));

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return cipherBytes;
    }

    private static String bytesToHex(byte[] hash) {

        return DatatypeConverter.printHexBinary(hash);

    }

    public static String Decryption() throws InvalidKeyException, IllegalBlockSizeException, InvalidAlgorithmParameterException, BadPaddingException {

        cipher.init(Cipher.DECRYPT_MODE, key, cipher.getParameters());
        plainBytesDecrypted = cipher.doFinal(cipherBytes);

        System.out.println("Decrypted data : " + new String(plainBytesDecrypted));

        return (new String(plainBytesDecrypted));
    }
}

您通常有3种选择:

  • 对密码/模式/填充进行硬编码,以便双方都知道您始终使用相同的格式
  • 在秘密消息之前发送密码/模式/填充,以便另一方知道初始化什么密码
  • 使用现有的协议,该协议已经为您包含了所有这些内容,并且可以安全地执行。例如,您可以在TLS连接内部发送数据

您通常有3种选择:

  • 对密码/模式/填充进行硬编码,以便双方都知道您始终使用相同的格式
  • 在秘密消息之前发送密码/模式/填充,以便另一方知道初始化什么密码
  • 使用现有的协议,该协议已经为您包含了所有这些内容,并且可以安全地执行。例如,您可以在TLS连接内部发送数据
你听说过吗?你听说过吗?