Encryption Between PHP & Java

后端 未结 4 1656
借酒劲吻你
借酒劲吻你 2020-12-09 14:10

I was looking to encrypt data between a PHP server and a Java Client. Individually the code works fine and I would like to stick with OpenSSL on the PHP server.

Do

4条回答
  •  無奈伤痛
    2020-12-09 14:31

    I can't figure out why your method fails. By the way, Here's how i did it,

    Java

    import com.sun.org.apache.xml.internal.security.utils.Base64;
    
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    import java.security.Key;
    
    public class MyClass {
    
        public static void main(String[] args) {
            String data = "Arnab C";
            final String enc = DarKnight.getEncrypted(data);
            System.out.println("Encrypted : " + enc);
            System.out.println("Decrypted : " + DarKnight.getDecrypted(enc));
        }
    
        static class DarKnight {
    
            private static final String ALGORITHM = "AES";
    
            private static final byte[] SALT = "tHeApAcHe6410111".getBytes();// THE KEY MUST BE SAME
            private static final String X = DarKnight.class.getSimpleName();
    
            static String getEncrypted(String plainText) {
    
                if (plainText == null) {
                    return null;
                }
    
                Key salt = getSalt();
    
                try {
                    Cipher cipher = Cipher.getInstance(ALGORITHM);
                    cipher.init(Cipher.ENCRYPT_MODE, salt);
                    byte[] encodedValue = cipher.doFinal(plainText.getBytes());
                    return Base64.encode(encodedValue);
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
                throw new IllegalArgumentException("Failed to encrypt data");
            }
    
            public static String getDecrypted(String encodedText) {
    
                if (encodedText == null) {
                    return null;
                }
    
                Key salt = getSalt();
                try {
                    Cipher cipher = Cipher.getInstance(ALGORITHM);
                    cipher.init(Cipher.DECRYPT_MODE, salt);
                    byte[] decodedValue = Base64.decode(encodedText);
                    byte[] decValue = cipher.doFinal(decodedValue);
                    return new String(decValue);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
    
            static Key getSalt() {
                return new SecretKeySpec(SALT, ALGORITHM);
            }
    
        }
    }
    

    PHP

    ";
    $dec = decrypt($enc,$GLOBALS['key']);
    echo "Decrypted : ".$dec;
    

    Java Output

    Encrypted : PJG1Uu6SjJuuVGf7ApuHAw==

    Decrypted : Arnab C

    PHP Output

    Encrypted : PJG1Uu6SjJuuVGf7ApuHAw==

    Decrypted : Arnab C

提交回复
热议问题