Мне нужны две функции, которые зашифровывают некоторые данные в php и дешифруют их в java «правильно» - PullRequest
0 голосов
/ 28 августа 2010

Мне нужно получить две функции.Я хочу перенести данные с моего сайта на мой сервер в формате xml.Теперь на моем сервере я хочу создать функцию, которая зашифровывает данные и помещает их в xml, а другую - в java для расшифровки.

Скажите, пожалуйста, есть ли предопределенная функция или вы можете простосэкономить 5 минут?

Ответы [ 3 ]

3 голосов
/ 28 августа 2010

Ну, вы можете использовать любую функцию шифрования mcrypt в PHP.Один пример для шифрования в AES 128:

  $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;
    }
}
1 голос
/ 28 августа 2010

Нет смысла изобретать колесо здесь. Используйте SSL, что подразумевает HTTPS-запрос. Вы можете сделать это через CURL.

curl встроен в PHP и есть также Java-версия http://php.net/manual/en/book.curl.php

эквивалент CURL в JAVA

Надеюсь, это поможет.

0 голосов
/ 28 августа 2010

Вы изучили JSON ?

Он не зашифрован, но это простой способ передачи данных между различными программами и языками.

...