700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > PHP Java des加密解密实例【PHP】

PHP Java des加密解密实例【PHP】

时间:2019-06-30 02:49:43

相关推荐

PHP Java des加密解密实例【PHP】

后端开发|php教程

PHP,Java,des,加密解密

后端开发-php教程

des加密是对称加密中在互联网应用的比较多的一种加密方式,php 通过mcrypt扩展库来支持des加密,要在Php中使用des加密,需要先安装mcrypt扩展库

discuz门户源码 整站,Ubuntu登录桌面卡死,tomcat登陆页面配置,手工自制爬虫玩具,php框架实例教程交流学习,南京seo专家lzw

下面是加密解密的实例

带数据库的asp源码,vscode统一代码格式快捷键,魅族ubuntu固件,tomcat路径名怎么看,sqlite如何搜索,佛山顺德网页设计,阿里云服务器内网带宽,菱形插件,前端框架的封装,爬虫净有毒吗,php课程培训班,挂机SEO,珠宝首饰网站模板,文件上传网页源码,仿小米商城模板 乱码,html网页切换三种页面,图书管理系统源码,h5 个人博客 网站程序lzw

$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”;//密钥

$text = “Meet me at 11 o’clock behind the monument.”;//需要加密的内容

echo ($text) . “\n”;

asp个人相册源码,vscode面板字体,ubuntu 交流,tomcat和集群,sqlite存字符串,不用密码登录微信插件,前端三大框架都要会吗,新手可以学网络爬虫嘛,传智php就业班视频,seo推广优化广告,网站翻页动画效果,免费手机网页制作模板,php168 人大 模板lzw

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

echo $crypttext . “\n”;//加密后的内容

echo mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key,base64_decode($crypttext),MCRYPT_MODE_ECB,$iv);//解密后的内容

在AES加密算法中通常会用到MCRYPT_RIJNDAEL_128、MCRYPT_RIJNDAEL_192、MCRYPT_RIJNDAEL_256三种,后面的128、192、256代表的是秘钥(也就是加密的Key)是多少bit的,比如使用的是MCRYPT_RIJNDAEL_128,那么用这个算法加密时秘钥长度就是128bit的,比如 $key = ‘fjjda0&9^$$#+*%$fada’,是20个字符,那在实际加密的时候只用到前16个字符加密(16*8=128),不足128bit的php中会用’\0’来补齐。

有的时候做项目对接的时候,可能你用的是Php加密的,而对方用的是java写的,对接的过程中就发现机加密后的内容对方解密不了,这是因为Php跟java在实现这个算法的时候有差别,要想正确加密解密需要两边都做下处理:

PHP:

<?php

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:

import javax.crypto.Cipher;

import javax.crypto.spec.SecretKeySpec;

import mons.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));

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。