相关疑难解决方法(0)

无法将加密格式从 Java 复制到 PHP

我有以下 Java 代码,由集成合作伙伴之一共享,用于其 API 加密

    import java.nio.ByteBuffer;
    import java.security.AlgorithmParameters;
    import java.security.SecureRandom;
    import java.security.spec.KeySpec;
    import javax.crypto.BadPaddingException;
    import javax.crypto.Cipher;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.PBEKeySpec;
    import javax.crypto.spec.SecretKeySpec;
    import org.apache.commons.codec.binary.Base64;

public class AES256 {

    /**
     *
     * @param word
     * @param keyString
     * @return
     * @throws Exception
     */
    public static String encrypt(String word, String keyString) throws Exception {
        byte[] ivBytes;
        //String password = "zohokeyoct2017";
        /*you can give whatever you want for password. This is for testing purpose*/
        SecureRandom random …
Run Code Online (Sandbox Code Playgroud)

php java encryption aes

4
推荐指数
1
解决办法
1437
查看次数

如何使openssl_encrypt填充所需块大小的输入?

如果我手动将我的字符串填充到32的长度,我的代码就可以工作了.
我的问题是:有没有办法让openSSL填充数据,或者我总是必须为它做这个吗?

工作:

 openssl_encrypt ("my baba is over the ocean1111111", 'AES-256-CBC', $MY_SECRET_KEY,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,$MY_IV);
Run Code Online (Sandbox Code Playgroud)

不工作:

openssl_encrypt ("my baba is over the ocean", 'AES-256-CBC', $MY_SECRET_KEY,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,$MY_IV);
Run Code Online (Sandbox Code Playgroud)

我目前通过自填充来解决这个问题:

$pad = 32 - (strlen("my baba is over the ocean") % 32);
$clear = "my baba is over the ocean" . str_repeat(chr($pad), $pad); //encrypt this string
Run Code Online (Sandbox Code Playgroud)

php encryption padding php-openssl php-7.1

3
推荐指数
1
解决办法
4329
查看次数

标签 统计

encryption ×2

php ×2

aes ×1

java ×1

padding ×1

php-7.1 ×1

php-openssl ×1