2つの関数を取得する必要があります。ウェブサイトからサーバーにxml形式でデータを転送したい。今、私のサーバーで、データを暗号化してxmlに配置する関数と、データを復号化するJavaの別の関数を作成したいと思います。
事前定義された機能があるかどうか教えてください、または5分だけ余裕がありますか?
mcrypt
さて、 PHPでは任意の暗号化関数を使用できます。AES 128で暗号化する1つの例:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "Put your secret key here";
$text = "<xml>This is your XML text</xml>";
//encrypting now with RIJNDAEL 128 encryption.
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_ECB, $iv);
//Display encrypted content
echo $crypttext;
そして、復号化には、このコードを使用します(私は、Javaプロではないため、いくつかのバグがある可能性があります)。
package org.kamal.crypto;
import java.security.*;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.*;
public class SimpleProtector
{
private static final String ALGORITHM = "AES";
private static final byte[] keyValue =
new byte[] { 'P', 'u', 't', ' ', 'Y', 'o', 'u', 'r', ' ', 'S', 'e', 'c', 'r', 'e', 't', ' ', 'K', 'e', 'y', '', 'H', 'e', 'r', 'e'};
public static String decrypt(String encryptedValue) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGORITHM);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedValue);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
private static Key generateKey() throws Exception {
Key key = new SecretKeySpec(keyValue, ALGORITHM);
// SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
// key = keyFactory.generateSecret(new DESKeySpec(keyValue));
return key;
}
}
ここで車輪の再発明をする意味はありません。SSLを使用します。これはHTTPSリクエストに含まれるものです。あなたはCURLを通してそれらをすることができます。
curlはPHPに組み込まれており、Javaバージョンもあります http://php.net/manual/en/book.curl.php
お役に立てば幸いです。
JSONを調べましたか?
暗号化されていませんが、異なるプログラムや言語間でデータをやり取りする簡単な方法です。