/** * * 加密函数 * 算法:des * 加密模式:ecb * 补齐方法:PKCS5 * * @param unknown_type $input */ function encryptDesEcbPKCS5($input, $key) { $size = mcrypt_get_block_size('des', 'ecb'); $input = pkcs5_pad($input, $size); $td = mcrypt_module_open('des', '', 'ecb', ''); //$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $iv = 0; mcrypt_generic_init($td, $key, $iv); $data = mdecrypt_generic ($td, $input); mcrypt_generic_deinit($td); mcrypt_module_close($td); //$data = base64_encode($data); return $data; } /** * 解密函数 * 算法:des * 加密模式:ecb * 补齐方法:PKCS5 * @param unknown_type $input */ function decryptDesEcbPKCS5($input, $key) { $size = mcrypt_get_block_size('des', 'ecb'); $td = mcrypt_module_open('des', '', 'ecb', ''); $iv = 0; mcrypt_generic_init($td, $key, $iv); $data = mcrypt_generic($td, $input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = pkcs5_unpad($data, $size); //$data = base64_encode($data); return $data; } function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } function pkcs5_unpad($text) { $pad = ord($text{strlen($text) - 1}); if ($pad > strlen($text)) return false; if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; return substr($text, 0, -1 * $pad); } $str = 'test crypt'; $key = 'jack11'; $res = encryptDesEcbPKCS5($str, $key); echo "$res\n"; $deRes = decryptDesEcbPKCS5($res, $key); echo "\n$deRes\n";
PHP的DES加密的补齐比较特殊,而且不能指定
http://www.herongyang.com/Cryptography/DES-PHP-Block-Padding-in-mcrypt.html
相关推荐
北京联通全网有关网上订购和点播接口URL加密算法 * *采用3DES加密, ECB模式/使用PKCS7方式填充不足位, *目前给的密钥是192位(24个字节)经过BASE64编码后的可见字符串
des 及3des ecb pkcs5padding 加密 c++ 输出结果非base64及hex 加密结果验证 http://tool.chacuo.net/crypt3des
Delphi7AES加密解密与JAVA互转(默认128位+ECB+PKCS5Padding+先BASE64再HEX)
delphi版的3DES加密,采用ECB模式,pkcs5padding 填充,最近做第三方接口时用到的,生成的密文是16进制的,与网页验证ok
在对接java开发的加密方法,整理的PHP 对接java AES/ECB/PKCS7Padding加密转16进制字符串,加解密方法
最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...
梦想加密器 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式
DES加密,采用CBC模式,PKCS5Padding填充
根据原"与JAVA的关于DES/CBC/PKCS5Padding 互相解密" 代码修改,解决中文乱码问题。与在线加密网站结果一致
实现了AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充。是标准的AES算法,支持在线AES加解密网站互解。 本源码从CSDN一位前辈的源码基础上做了更改,增加支持加密返回BASE64,更加...
分享一个php对称加密算法DES和AES类,支持密钥:64/128/256 bit(字节长度8/16/32),支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit),支持模式:CBC/ECB/OFB/CFB,密文编码:base64字符...
梦想加密器源码 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式
js实现3des加密,默认使用ecb模式,填充方式为PKCS5Padding
本文实例讲述了PHP实现的DES加密解密封装类。分享给大家供大家参考,具体如下: <?php /** * PHP版DES加解密类 * 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容 * */ class CryptDes { var $key; var $...
3DES加密算法,使用openssl库,ECB算法,pkcs7padding填充模式(借鉴网上的算法,并经过自己的改良,可以实现加密与解密)
public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5PADDING"; validKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { Key k = toKey(key); Cipher ...
基于openssl静态库的DES+base64+MD5的加解密C++Demo,其中DES采用ECB模式,pkcs5padding的填充方法;兼容JAVA,C#的DES,可应用于与网络服务器通信过程中的加解密,并且已经验证OK。 与C#/java互通的DES加密解密代码。
PHP版DES加解密类 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容
使用的是Chilkat Delphi DLL,经过测试仅实现了3DES中ECB加密模式,填充方式为pkcs5pading的加解密,加密后的内容可用在线3DES加解密来验证,可得到与网页一致的加密结果。所以可以与Java,C#等其他语言实现互通加...