php中des加密解密 匹配C#des加密解密 对称加密

原文:php中des加密解密 匹配C#des加密解密 对称加密

网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是加密密钥,$iv 是偏移量,默认偏移量和加密密匙是一样的,

<?php

class DES

{

    var $key;

    var $iv; //偏移量

    

    function DES( $key, $iv=0) {

    //key长度8例如:1234abcd

        $this->key = $key;

        if( $iv == 0 ) {

            $this->iv = $key; //默认以$key 作为 iv

        } else {

            $this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );

        }

    }

    

    function encrypt($str) {

    //加密,返回大写十六进制字符串

        $size = mcrypt_get_block_size(MCRYPT_DES,MCRYPT_MODE_CBC);

        $str = $this->pkcs5Pad ( $str, $size );

        return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );

    }

    

    function decrypt($str) {

    //解密

        $strBin = $this->hex2bin( strtolower( $str ) );

        $str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );

        $str = $this->pkcs5Unpad( $str );

        return $str;

    }

    

    function hex2bin($hexData) {

        $binData = "";

        for($i = 0; $i < strlen ( $hexData ); $i += 2) {

            $binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );

        }

        return $binData;

    }

 

  
 function pkcs5Pad($text, $blocksize) {

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

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

    }

    

  
 function pkcs5Unpad($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 = "xublog";

$key = '12345678';

$crypt = new DES($key);

$mstr = $crypt->encrypt($str);

echo "[ $str ]加密:[ $mstr
]<br>";

$str = $crypt->decrypt($mstr);

echo "[ $mstr ]解密:[ $str
]<br>";

 

时间: 2024-10-20 03:11:03

php中des加密解密&#160;匹配C#des加密解密&#160;对称加密的相关文章

.net的对称加密在PHP里怎么解密

问题描述 //获取或设置对称算法的机密密钥.privatebyte[]DESKeyNUM=newbyte[]{数组};//获取或设置对称算法的初始化向量.privatebyte[]DESIVNUM=newbyte[]{数组};objDES.CreateEncryptor(DESKeyNUM,DESIVNUM),这种加密在php里怎么解?网上找到php对称加密,key都是传字符串或者base64...不知道byte[]这2个数组在PHP里怎么输,有转过的么? 解决方案 解决方案二: php里的字符

Android 安全加密:对称加密详解_Android

Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程 以上学习所有内容,对称加密.非对称加密.消息摘要.数字签名等知识都是为了理解数字证书工作原理而作为一个预备知识.数字证书是密码学里的终极武器,是人类几千年历史总结的智慧的结晶,只有在明白了数字证书工作原理后,才能理解Https 协议的安全通讯机制.

Android 安全加密:对称加密详解

Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程 以上学习所有内容,对称加密.非对称加密.消息摘要.数字签名等知识都是为了理解数字证书工作原理而作为一个预备知识.数字证书是密码学里的终极武器,是人类几千年历史总结的智慧的结晶,只有在明白了数字证书工作原理后,才能理解Https 协议的安全通讯机制.

对称加密与非对称加密

1 对称加密 对称加密是最快速.最简单的一种加密方式,加密与解密用的是同样的密钥.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大加密越强,但加密与解密的过程越慢.若只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解密.但密钥有足够大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间.密钥的大小既要照顾到安全性,也要照顾到效率. 2000年10月2日,美国

9999:谁有c++版des加密源代码 可以跟java版des加密库匹配 可以互相加解密

问题描述 9999:谁有c++版des加密源代码可以跟java版des加密库匹配可以互相加解密急需:万分感谢!本人在网上已经找了很多个版本,都无法跟java版des库加密出来的结果一致.最好的一个版本是:(40字节的明文(如:100@05963010591062666@013001791717991233)8位的密钥)c++加密出来密文是40个字节.java加密出来的密文是48个字节.前40个字节都是一致的.java加密调用代码如下:[DESKeySpecdks=newDESKeySpec(ra

.NET中的DES对称加密详解_实用技巧

DES算法一般有两个关键点,第一个是加密模式,第二个是数据补位,加密模式的主要意义就是,加密算法是按块进行加密的,例如 DES ,是 64Bit 一个块的进行加密,就是每次加密 8 个字节,因此每次输入八个字节的明文输出八个字节密文,如果是 16 个字节,那么分成两个块依次进行加密,问题就出现在这里,如果明文是 1234567812345678,分块分别进行加密,那么加密的结果类似"C4132737962C519C C4132737962C519C",可以看出明文的规律,这就是 ECB

.NET中的DES对称加密

DES是一种对称加密(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法.一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验. DES算法一般有两个关键点,第一个是加密模式,第二个是数据补位,加密模式的主要意义就是,加密算法是按块进行加密的,例如 DES ,是 64Bit 一个块的进行加密,就是每次加密 8 个字节,因此每次输入八个字节的明文输出八个字节密文,如果是 16 个字节,那么分成两个块依

关于java解密的问题,C#DES加密过的数据,用java解密

问题描述 关于java解密的问题,C#DES加密过的数据,用java解密 C#加密解密代码如下 public static String sKey = "xxxxxx"; /// <summary> /// 加密 /// </summary> /// <param name="Text"></param> /// <returns></returns> public static String

在delphi中,如何不对称加密解密

问题描述 在delphi中,如何不对称加密解密 求如何用delphi对字符串加密解密且加密解密算法是不对称的,有源代码更好... 解决方案 http://www.linuxidc.com/Linux/2011-02/32259.htm