`
jackchen0227
  • 浏览: 147023 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

PHP的des加密+ ECB模式+PKCS5 补齐

    博客分类:
  • php
 
阅读更多
/**
 * 
 * 加密函数
 * 算法: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

分享到:
评论

相关推荐

    des 及3des ecb pkcs5padding 加密 c++

    总的来说,理解和实现DES及3DES的ECB模式加密,以及PKCS5Padding在C++中的应用,需要对加密算法原理、C++编程以及OpenSSL库有一定的掌握。这样的技能在信息安全、网络通信和数据保护等领域都有广泛的应用。通过实际...

    北京联通全网有关网上订购和点播接口URL加密算法 * *采用3DES加密, ECB模式/使用PKCS7方式填充不足位, *目前给的密钥是192位(24个字节)经过BASE64编码后的可见字符串

    北京联通全网有关网上订购和点播接口URL加密算法 * *采用3DES加密, ECB模式/使用PKCS7方式填充不足位, *目前给的密钥是192位(24个字节)经过BASE64编码后的可见字符串

    delphi版的3DES加密 pkcs5padding填充

    总结起来,Delphi中的3DES加密结合了ECB模式和PKCS5Padding填充,提供了一种可靠的数据加密方案。通过源代码文件`DesCipher.pas`,我们可以深入了解这种加密方法的具体实现,这对于理解和使用3DES加密在Delphi环境中...

    Delphi7AES加密解密与JAVA互转(默认128位+ECB+PKCS5Padding+先BASE64再HEX)

    在这里,我们特别关注128位密钥长度的AES加密,使用ECB(Electronic Codebook)模式,配合PKCS5Padding填充策略,以及数据编码的BASE64和HEX转换。 首先,AES加密是一种分组密码,它将明文数据分成固定大小的块进行...

    AES/ECB/PKCS5Padding 算法

    AES/ECB/PKCS5Padding 算法,用于数据加密,实现方式为Java。AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准

    对接java AES/ECB/PKCS7Padding加密

    ECB(Electronic Codebook)模式是最简单的加密模式,将明文数据块逐个进行加密,不考虑上下文关系。PKCS7Padding是一种填充方式,用于确保明文数据长度能够被密钥长度整除,使得加密过程能够正常进行。 在Java中,...

    Delphi10.2 DES/CBC/PKCS5Padding/UTF-8

    总之,"Delphi10.2 DES/CBC/PKCS5Padding/UTF-8" 是一个针对Delphi环境的加密库,它实现了DES加密算法的CBC模式,遵循PKCS5填充规则,同时处理了中文字符的UTF-8编码,确保了与其他语言环境的互操作性。

    delphi与java 加密解密 DES/CBC/PKCS5Padding

    最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...

    AES_CBC_PKCS5加解密 MD5加密

    AES(Advanced Encryption Standard)即高级加密标准,是一种广泛应用的块密码算法,而CBC(Cipher Block Chaining)模式和PKCS5(Public Key Cryptography Standards #5)填充模式是AES加密中常用的模式和填充方式...

    Java解决AES加密解密 ( AES/ECB/PKCS5Padding )

    JAVA解决AES ECB 模式下加密解密;附加国内三方AES加密网站---http://tool.chacuo.net/cryptaes;如有用解决您工作问题,烦请点个赞

    梦想加密器 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式

    3DES,又称为TDES,是DES的一个增强版,通过三次应用DES加密过程来提高安全性。3DES可以使用三种不同的密钥,或者两个相同的密钥,从而增加了破解的难度。虽然3DES相对更安全,但由于其加密速度较慢,目前也在逐渐被...

    DES加密_delphi_加解密_des_

    5. **标签"delphi 加解密 des"**:这些标签进一步强调了讨论的重点在于使用Delphi进行DES加密和解密的实现。 压缩包中的"DES加密"文件很可能包含了上述功能的实现,例如一个包含DesEncrypt和DesDecrypt函数的单元,...

    java+3des加密+和字符串转换

    初始化`Cipher`时,需要指定加密模式(如ECB、CBC等)和填充方式(如NoPadding、PKCS5Padding等)。 ```java Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, ...

    C++和JAVA,AES/ECB/PKCS5Padding 互通

    这里的“C++和JAVA,AES/ECB/PKCS5Padding 互通”指的是使用相同的加密算法,即高级加密标准(AES)的电子密码本模式(ECB)和PKCS5填充(Padding)来实现两个不同平台之间的数据安全传输。AES是一种广泛使用的对称...

    DES加密算法C++实现

    5. **CBC(Cipher Block Chaining)模式**:比ECB更安全,每个块的加密结果都会与下一个块的明文进行异或操作后再加密。在C++中实现,需要维护一个前一密文块的值,以便于对当前明文块进行异或操作。 6. **填充策略...

    AES 示例(CBC算法模式 PKCS5填充模式)

    CBC(Cipher Block Chaining)是AES的一种工作模式,而PKCS5(Public Key Cryptography Standards #5)则是一种常用的填充方式,用于确保输入数据长度能够完美适应块密码处理。在本示例中,我们将深入理解AES-CBC-...

    DES加密解析,ECB,CBC

    ### DES加密解析、ECB与CBC模式详解 #### 一、概述 数据加密标准(Data Encryption Standard,简称DES)是一种广泛使用的对称密钥加密算法。DES最初由IBM开发,并在1977年被美国国家标准局(现为NIST)采纳为联邦...

    Delphi XE2+标准AES加解密算法(AES/EBC,CBC/PKCS5Padding-base64)

    实现了AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充。是标准的AES算法,支持在线AES加解密网站互解。 本源码从CSDN一位前辈的源码基础上做了更改,增加支持加密返回BASE64,更加...

    实现使用3des在页面js加密,后台java解密

    这里的`decrypt3DES`方法接收Base64解码后的加密字节数组和密钥,通过`Cipher`类的`DESEDE/CBC/PKCS5Padding`模式进行解密,最终得到原始信息。 在实际应用中,确保前端与后端使用的密钥一致,同时注意密钥的安全...

    3DES-ECB模式加密,可以与C#和Java互通

    标题中的“3DES-ECB模式加密”是指一种在信息安全领域广泛应用的加密算法,全称为Triple Data Encryption Standard(三重数据加密标准)。3DES是DES(Data Encryption Standard)的加强版,通过三次应用DES的加密...

Global site tag (gtag.js) - Google Analytics