如何使用phpseclib进行加密和使用AES算法使用Java进行解密

阿米帕

我必须对运行php脚本的服务器上的数据进行加密,然后使用AES算法将它们发送到另一台运行Java的服务器上。我选择对javax.cryptophp和Java端分别使用phpseclib和软件包。不幸的是有填充例外。这是我的代码:

在php端:

$aes = new Crypt_AES('MODE_ECB');
$key = "secretkeyfor1234secretke";
$aes->setKey($key);
$plaintext = 'Good evening this is just a test';
$cryptedmessage =  base64_encode($aes->encrypt($plaintext));

在Java方面:clefAES包含密钥,数据包含密文。我使用RSA加密发送密钥(此处未报告)。

data = EFjTatx2VkAZR3ScS0UadQr8M6zEkIz/kAX0Cl+XH2FNNHVbeJsEd2b+zWlEkvR6;//( it is base64 encoded )
Cipher aescipher = Cipher.getInstance("AES/ECB/NoPadding", "SunJCE");
Key keySpec = new SecretKeySpec(clefAES, "AES");                   
byte[] encryptedTextByte = decoder.decodeBuffer(data);
aescipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decryptedByte = aescipher.doFinal(encryptedTextByte);
String decryptedText = new String(decryptedByte);

这是解密的文本给出的结果:

晚上好,#3mg。?

如果有人知道我为什么得到这个结果以及如何解决这个问题,那将非常有帮助。phpseclib是否与javax.crypto软件包兼容以进行AES加密?这是我想要实现的最佳方法吗?

纽伯特

这是我从您的PHP代码获得的输出:

GYQGpH6fRpHBP0ACElbcp1nvcS0ojcqzvnqclHxvB+BtgM4KEH+K7Q2F6rhEx0hM

这与您要传递给Java代码的内容形成对比。

另外,您的PHP代码没有执行ECB模式。它正在执行CBC模式。这是因为这new Crypt_AES('MODE_ECB');不是您需要使用的代码。相反,这是您需要用来执行ECB模式的代码:

new Crypt_AES(CRYPT_MODE_ECB);

另外,默认情况下phpseclib正在执行填充。要禁用它,您需要执行以下操作:

$aes->disablePadding();

说完之后,我将其作为输出:

GYQGpH6fRpHBP0ACElbcp9i8pjKf4G7wiPLDL7TM1Ec=

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用phpseclib进行RSA和AES混合加密/解密失败

使用phpseclib使用AES进行加密,并使用CryptoJS进行解密

如何使用RSA和AES算法加密和解密文件

使用RSA和AES进行加密/解密;标准?

使用AES进行文件加密解密

使用Spring Security进行AES加密/解密

使用CryptoJS进行AES加密并使用CodeIgniter进行解密

使用Linux使用AES进行文件加密/解密

非对称加密算法,允许使用公钥和私钥进行加密和解密

使用CryptoJS在Java中进行AES加密并在JavaScript中进行解密

使用CryptoJS在javascript中进行AES加密/解密

使用OpenSSL进行AES_128_CBC加密/解密

使用Java进行RSA加密并使用JavaScript进行解密

只需使用Javascript进行XOR加密并使用Java进行解密

使用openssl命令行工具进行AES加密,并使用Java解密

使用 openssl 进行 phpseclib RSA 解密

使用CryptoJS和PHP进行AES加密

使用Go和PHP进行AES加密

使用Java的AES加密和使用Java的解密

使用AES和Base64编码进行加密和解密

如何在Java中使用AES算法解密加密的字符串?

使用套接字服务器和des算法进行加密和解密

使用Java 8u20进行慢速AES GCM加密和解密

如何在Elixir中使用AES CBC 128进行加密和解密

如何在Golang中使用RSA密钥对进行AES加密和解密

使用bouncycastle在Java中实现Gost 28147-89算法进行加密和解密

使用C#对其进行加密,然后使用Android对其进行解密(AES | IllegalBlockSizeException)

使用AES进行视频加密

NodeJS如何使用crypto-js或使用自定义密钥大小,iv,模式和填充以UTF8编码的加密包对(AES算法)数据进行加密