为php和java实现的加密方法?

我必须将一些字符串从java servlet传递给php脚本。 加密字符串有哪些选项? 我需要一个为java和php实现的方法(比如…… caesar cipher ……)。 有没有标准的加密方法我应该能够获得java和php的库?

我想加密java端的字符串,传递给php脚本,然后让php脚本解密它们。

由于我正在使用的提供商的限制,我无法使用https。

谢谢

希望这可以让你开始。 缺少error handling,密钥是硬编码的。 对于生产质量代码,需要解决这两个问题。 从Java端,您可以使用Java Cryptography Architecture(JCA) :

import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import javax.xml.bind.DatatypeConverter; public final void testTesting() throws Exception { final String plainText = "plain text"; final String result = encrypt(plainText); System.out.println(result); } public String encrypt(final String plainText) throws Exception { final byte[] data = plainText.getBytes("UTF-8"); final byte[] encoded = encrypt(data); final String result = new String(encoded); return result; } public byte[] encrypt(final byte[] data) throws Exception { // this is just an example key, real code should use a properly generated shared secret final byte[] secret = new byte[] {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}; final SecretKeySpec key = new SecretKeySpec(secret, "AES"); final Cipher encryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); encryptCipher.init(Cipher.ENCRYPT_MODE, key); final byte[] iv = encryptCipher.getIV(); final byte[] encrypted = encryptCipher.doFinal(data); final int outputLength = encrypted.length; final int ivLength = iv.length; final byte[] results = new byte[outputLength + ivLength]; System.arraycopy(iv, 0, results, 0, ivLength); System.arraycopy(encrypted, 0, results, ivLength, outputLength); return DatatypeConverter.printBase64Binary(encoded); } 

从PHP方面来说,你需要Mcrypt 。

  strlen($text)) { return false; } if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) { return false; } return substr($text, 0, -1 * $pad); } ?> 

函数pkcs5_unpad是从这里复制的,因为似乎PHP Mcrypt不包含对PKCS5填充的支持。 Java代码使用用于加密数据的初始化向量为数据添加前缀。 随后PHP代码将其分为两部分,即初始化向量和加密数据。

此代码在CBC模式下使用128位AES ( Rijndael ),对于大多数用途而言应该足够安全。 除了简单加密之外,我建议使用此处所述的HMAC以确保数据不被篡改。 要在Java中执行HMAC,请使用Mac类。 对于PHP,请参阅Mhash 。

Jasypt( http://www.jasypt.org/ )将使用您想要的任何算法。 应该能够在几分钟内实现任何常见的算法。

查看PHP的mcrypt扩展。 其中一个几乎肯定存在于Java中。

大多数标准加密算法都可以在PHP和Java中使用。

看一下:

  • PHP mcrypt
  • Java SE安全性

如您所见,它们至少都支持DES,TripleDES,RC2。