用Java加密/解密“ AES / ECB / PKCS5Padding”

麦尔森

谁能告诉我如何使用此PHP函数加密的数据(使用Java)解密?

PHP代码

    public function pad($data, $blocksize = 16) {
        $pad = $blocksize - (strlen($data) % $blocksize);
        return $data . str_repeat(chr($pad), $pad);
    }
    public function decryptECB($data) {
        return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::BLOB_ENCRYPTION_KEY, self::pad($data), MCRYPT_MODE_ECB);
    }
    public function encryptECB($data) {
        return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::BLOB_ENCRYPTION_KEY, self::pad($data), MCRYPT_MODE_ECB);
    }

我在这里尝试了大多数东西,但是其中大多数没有填充,即使添加填充也无法使用。

编辑1:

(从PHP)

输入看起来像这样:http : //pastebin.com/2cyig9nh

关键是这样的:

M02cnQ51Ji97vwT4

输出是这样的:http : //pastebin.com/XcA50UGH

(Java代码)

public class Mcrypt {

private SecretKeySpec keyspec;
private Cipher cipher;

private String SecretKey = "M02cnQ51Ji97vwT4";

public Mcrypt() {
    keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES");
    try {
        cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (NoSuchPaddingException e) {
        e.printStackTrace();
    }
}

public String encrypt(String text) throws Exception {
    if (text == null || text.length() == 0)
        throw new Exception("Empty string");
    byte[] encrypted = null;
        try {
            cipher.init(Cipher.ENCRYPT_MODE, keyspec );
            encrypted = cipher.doFinal(padString(text).getBytes());
        } catch (Exception e) {
            throw new Exception("[encrypt] " + e.getMessage());
        }
    return Base64.encodeBase64String(encrypted);
}

public byte[] decrypt(String code) throws Exception {
    if (code == null || code.length() == 0)
        throw new Exception("Empty string");
    byte[] decrypted = null;

    try {
        cipher.init(Cipher.DECRYPT_MODE, keyspec );
        decrypted = cipher.doFinal(new Base64().decode(code.getBytes()));
    } catch (Exception e) {
        throw new Exception("[decrypt] " + e.getMessage());
    }
    return decrypted;
}

private static String padString(String source) {
    char paddingChar = ' ';
    int size = 16;
    int x = source.length() % size;
    int padLength = size - x;
    for (int i = 0; i < padLength; i++) {
        source += paddingChar;
    }
    return source;
}
}
马丁·波德威斯

您正在用Java代码对Base64进行编码和解码,但是PHP代码似乎并未执行任何编码/解码。您在Pastebin上发布的内容似乎证实了这一点。如果要使用字符串而不是字节-字节是现代密码接受的唯一输入-那么您应该确保(字符)编码在两侧都是正确的。如果只想使用字节,请不要在Java中解码二进制文件-输入已经以字节为单位,而不是文本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AES / CBC / PKCS5Padding与AES / CBC / PKCS7Padding具有256键大小的性能Java

来自分类Dev

在C#中解密使用PCKS5填充的AES / ECB时遇到问题

来自分类Dev

Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

来自分类Dev

AES ECB加密组

来自分类Dev

NET的Java RSA / ECB / PKCS1Padding加密

来自分类Dev

用python中的AES生成ECB企鹅

来自分类Dev

从Java到PHP的带有SecretKey的AES CBC PKCS5Padding

来自分类Dev

所有类型的Android设备均可使用AES / CBC / PKCS5Padding加密解密算法和SHA-1哈希算法吗

来自分类Dev

AES / cbc / pkcs5padding加密IOS

来自分类Dev

AES加密256 ECB模式

来自分类Dev

AES ECB iOS加密

来自分类Dev

使用CryptoJS解密AES / CBC / PKCS5Padding

来自分类Dev

无法复制从Java到PHP中使用AES / ECB / PKCS5Padding加密方法

来自分类Dev

C#中的Java AES / CBC / PKCS5Padding

来自分类Dev

如何在dart中使用AES CBC 256位和PKCS5Padding进行加密和解密以及如何检索参数

来自分类Dev

用于ECB AES的Linux内核加密API

来自分类Dev

CryptoJS AES 256 ECB解密

来自分类Dev

从ColdFusion加密解密NodeJS中的AES / CBC / PKCS5Padding

来自分类Dev

在Dart中解密AES / CBC / PKCS5Padding加密

来自分类Dev

C和Java中的输出AES / ECB / PKCS7不相同

来自分类Dev

用Java加密/解密“ AES / ECB / PKCS5Padding”

来自分类Dev

Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

来自分类Dev

NET的Java RSA / ECB / PKCS1Padding加密

来自分类Dev

Ruby中的Coldfusion“ AES / CBC / PKCS5Padding”解密

来自分类Dev

AES / ECB解密数据的大小

来自分类Dev

java.security.NoSuchAlgorithmException:找不到任何支持 Blowfish/ECB/PKCS5Padding 的提供程序

来自分类Dev

使用 AES/CBC/PKCS7Padding 加密/解密

来自分类Dev

使用 AES/ECB/NoPadding 与 PKCS5Padding 进行加密

来自分类Dev

使用 PHP OpenSSL 将 Java AES/ECB/PKCS7Padding/ 代码转换为 PHP

Related 相关文章

  1. 1

    AES / CBC / PKCS5Padding与AES / CBC / PKCS7Padding具有256键大小的性能Java

  2. 2

    在C#中解密使用PCKS5填充的AES / ECB时遇到问题

  3. 3

    Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

  4. 4

    AES ECB加密组

  5. 5

    NET的Java RSA / ECB / PKCS1Padding加密

  6. 6

    用python中的AES生成ECB企鹅

  7. 7

    从Java到PHP的带有SecretKey的AES CBC PKCS5Padding

  8. 8

    所有类型的Android设备均可使用AES / CBC / PKCS5Padding加密解密算法和SHA-1哈希算法吗

  9. 9

    AES / cbc / pkcs5padding加密IOS

  10. 10

    AES加密256 ECB模式

  11. 11

    AES ECB iOS加密

  12. 12

    使用CryptoJS解密AES / CBC / PKCS5Padding

  13. 13

    无法复制从Java到PHP中使用AES / ECB / PKCS5Padding加密方法

  14. 14

    C#中的Java AES / CBC / PKCS5Padding

  15. 15

    如何在dart中使用AES CBC 256位和PKCS5Padding进行加密和解密以及如何检索参数

  16. 16

    用于ECB AES的Linux内核加密API

  17. 17

    CryptoJS AES 256 ECB解密

  18. 18

    从ColdFusion加密解密NodeJS中的AES / CBC / PKCS5Padding

  19. 19

    在Dart中解密AES / CBC / PKCS5Padding加密

  20. 20

    C和Java中的输出AES / ECB / PKCS7不相同

  21. 21

    用Java加密/解密“ AES / ECB / PKCS5Padding”

  22. 22

    Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

  23. 23

    NET的Java RSA / ECB / PKCS1Padding加密

  24. 24

    Ruby中的Coldfusion“ AES / CBC / PKCS5Padding”解密

  25. 25

    AES / ECB解密数据的大小

  26. 26

    java.security.NoSuchAlgorithmException:找不到任何支持 Blowfish/ECB/PKCS5Padding 的提供程序

  27. 27

    使用 AES/CBC/PKCS7Padding 加密/解密

  28. 28

    使用 AES/ECB/NoPadding 与 PKCS5Padding 进行加密

  29. 29

    使用 PHP OpenSSL 将 Java AES/ECB/PKCS7Padding/ 代码转换为 PHP

热门标签

归档