欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > php >内容正文

php

java mcrypt encrypt-凯发k8官方网

发布时间:2024/10/14 php 8 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 java mcrypt encrypt_php mcrypt_encrypt加密,使用java解密 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

php mcrypt_encrypt使用给定的 cipher 和 mode 加密的数据,没有使用pkcs5_pad()函数填充的情况下,如果数据长度不是n*分组大小,则在其后使用“0”补齐。

java 不能使用aes/ecb/pkcs5padding,因为填充方式与php不同,不能正常的解密

在java中应该使用aes/ecb/nopadding方式,手动使用"0",填充补齐

一、php加密解密类示例:

/**

* aes

* aes加密解密算法

* created by phpstorm.

* date: 2015/4/28

* time: 15:41

*/

namespace fin\app\library\util;

class aes {

/**

* 算法,另外还有192和256两种长度

*/

const cipher = mcrypt_rijndael_128;

/**

* 模式

*/

const mode = mcrypt_mode_ecb;

/**

* 加密

* @param string $key 密钥

* @param string $str 需加密的字符串

*

* @return string

*/

static public function encode($key, $str)

{

if(empty($key)){

$key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";

}

$size = mcrypt_get_iv_size(self::cipher, self::mode);

$iv = mcrypt_create_iv($size, mcrypt_rand);

$string = mcrypt_encrypt(self::cipher, $key, $str, self::mode, $iv);

$string = base64_encode($string);

return $string;

}

/**

* 解密

* @param type $key

* @param type $str

*

* @return string

*/

static public function decode($key, $str)

{

if(empty($key)){

$key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";

}

$size = mcrypt_get_iv_size(self::cipher, self::mode);

$iv = mcrypt_create_iv($size, mcrypt_rand);

$string = base64_decode($str);

$string = mcrypt_decrypt(self::cipher, $key, $string, self::mode, $iv);

/**

* 解决下边问题

* the given cipher and mode. if the size of the data is not n * blocksize,

* the data will be padded with '\0'.

*/

$string = trim($string);

return $string;

}

}

二、 java加密解密类示例:

import javax.crypto.cipher;

import javax.crypto.spec.secretkeyspec;

import org.apache.commons.codec.binary.base64;

import org.apache.commons.lang3.*;

public class security {

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

byte[] crypted = null;

try {

input = stringutils.rightpad(input, 16, "\0");

secretkeyspec skey = new secretkeyspec(key.getbytes(), "aes");

cipher cipher = cipher.getinstance("aes/ecb/nopadding");

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/nopadding");

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 = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";

string data = "412016278912497";

system.out.println(security.encrypt(data, key));

system.out.println(security.decrypt(security.encrypt(data, key), key));

}

}

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的java mcrypt encrypt_php mcrypt_encrypt加密,使用java解密的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图