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-14 11:37:40

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

AES —— JAVA中对称加密和解密

package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Base64; impor

JAVA中AES对称加密和解密

AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Ba

AES对称加密和解密

package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Base64; impor

最全加密算法之对称加密和非对称加密

常见加密算法 : DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合: 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高: RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快: IDEA(International Data Encryption Algorithm)国际数据加密算法:使用 128 位密钥提供非常强的安全性: RSA:由 RSA 公司发明,是一个支持变长密钥的公共

对称加密与非对称加密

(一)对称加密(Symmetric Cryptography) 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解:但如果你的密钥有1 MB

常用的加密算法--对称加密

对称加密是最快速.最简单的一种加密方式,加密与解密用的是相同的密钥.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢. 常见的对称加密算法:DES算法.3DES算法 .AES算法 特点:算法公开,计算量小,加密速度快,加密效率高.其安全性主要依赖于秘钥的安全性.加密的时候使用的密钥只有一个. DES算法 对称加密算法,明文按照64位进行分组,密钥长64位,但是

对称加密和非对称加密的比较

对称加密: 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高.IDEA加密标准由PGP(PrettyGood Privacy)系统使用. 对称加密算法在电子商务交易过程中存在几个问题: 1.要求提供一条安全的渠道使通讯双方

SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解

DES: Digital Encryption Standard. Obsolete standard. 单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密. 单密钥算法是一个对称算法. 算法好在加/解速度快,密钥量短,采用对称加密 DSA: Digital Signature Algorithm. based on discrete logarithms computation. 用于签名 RSA: RSA 是一种非对称加解密算法. RSA 与 DSA

对称加密与非对称加密 浅析

对称加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解:但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费