Home >Backend Development >PHP Tutorial >PHP, Java des encryption and decryption examples_PHP tutorial

PHP, Java des encryption and decryption examples_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:55:561120browse

PHP, Java des encryption and decryption examples

This article mainly introduces PHP, Java des encryption and decryption examples. des encryption is one of the most common symmetric encryption applications on the Internet. This article provides the implementation codes for PHP and JAVA versions respectively. Friends in need can refer to it

Des encryption is an encryption method that is widely used on the Internet in symmetric encryption. PHP supports des encryption through the mcrypt extension library. To use des encryption in Php, you need to install the mcrypt extension library first

The following is an example of encryption and decryption

The code is as follows:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

 $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

 $key = "This is a very secret key";//Key

 $text = "Meet me at 11 o'clock behind the monument.";//Content that needs to be encrypted

echo ($text) . "n";

$crypttext =base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv));

echo $crypttext . "n"; //Encrypted content

echo mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key,base64_decode($crypttext),MCRYPT_MODE_ECB,$iv);//Decrypted content

In the AES encryption algorithm, MCRYPT_RIJNDAEL_128, MCRYPT_RIJNDAEL_192, and MCRYPT_RIJNDAEL_256 are usually used. The following 128, 192, and 256 represent the number of bits of the secret key (that is, the encrypted Key). For example, MCRYPT_RIJNDAEL_128 is used. Then when using this algorithm to encrypt, the key length is 128 bits. For example, $key = 'fjjda0&9^$$# *%$fada' is 20 characters. Then only the first 16 characters are used for encryption (16 *8=128), will be used in PHP that is less than 128bit

Sometimes when doing project docking, you may be using Php encryption, while the other party is using Java. During the docking process, you will find that the encrypted content cannot be decrypted by the other party. This is because Php and There are differences in the implementation of this algorithm in Java. To correctly encrypt and decrypt, you need to do the following processing on both sides:

PHP:

The code is as follows:

class Security {

public static function encrypt($input, $key) {

$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);

 $input = Security::pkcs5_pad($input, $size);

 $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');

 $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

mcrypt_generic_init($td, $key, $iv);

 $data = mcrypt_generic($td, $input);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

 $data = base64_encode($data);

return $data;

 }

private static function pkcs5_pad ($text, $blocksize) {

 $pad = $blocksize - (strlen($text) % $blocksize);

Return $text . str_repeat(chr($pad), $pad);

 }

public static function decrypt($sStr, $sKey) {

 $decrypted= mcrypt_decrypt(

MCRYPT_RIJNDAEL_128,

 $sKey,

base64_decode($sStr),

MCRYPT_MODE_ECB

 );

 $dec_s = strlen($decrypted);

$padding = ord($decrypted[$dec_s-1]);

 $decrypted = substr($decrypted, 0, -$padding);

return $decrypted;

 }

 }

 $key = "1234567891234567";

 $data = "example";

 $value = Security::encrypt($data, $key);

echo $value.'

';

echo Security::decrypt($value, $key );

Java:

The code is as follows:

import javax.crypto.Cipher;

Import javax.crypto.spec.SecretKeySpec;

Import org.apache.commons.codec.binary.Base64;

public class Security {

public static String encrypt(String input, String key){

 byte[] crypted = null;

try{

SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, skey);

crypted = cipher.doFinal(input.getBytes());

 }catch(Exception e){

System.out.println(e.toString());

 }

Return new String(Base64.encodeBase64(crypted));

 }

public static String decrypt(String input, String key){

byte[] output = null;

try{

SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, skey);

Output = cipher.doFinal(Base64.decodeBase64(input));

 }catch(Exception e){

System.out.println(e.toString());

 }

return new String(output);

 }

public static void main(String[] args) {

String key = "1234567891234567";

String data = "example";

System.out.println(Security.encrypt(data, key));

System.out.println(Security.decrypt(Security.encrypt(data, key), key));

 }

 }

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/990991.htmlTechArticlePHP, Java des encryption and decryption examples This article mainly introduces PHP, Java des encryption and decryption examples, des encryption is Symmetric encryption is an encryption method that is widely used on the Internet. This article respectively...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn