跳至正文

php 3des(php3des加密)

怎么用php进行3des解密

怎么用php进行3des解密

class Crypt3Des {

var $key;

function Crypt3Des($key){

$this->key = $key;

}

function encrypt($input){

$size = mcrypt_get_block_size(MCRYPT_3DES,’ecb’);

$input = $this->pkcs5_pad($input, $size);

$key = str_pad($this->key,24,’0′);

$td = mcrypt_module_open(MCRYPT_3DES, ”, ‘ecb’, ”);

$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

@mcrypt_generic_init($td, $key, $iv);

$data = mcrypt_generic($td, $input);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

// $data = base64_encode($this->PaddingPKCS7($data));

$data = base64_encode($data);

return $data;

}

function decrypt($encrypted){

$encrypted = base64_decode($encrypted);

$key = str_pad($this->key,24,’0′);

$td = mcrypt_module_open(MCRYPT_3DES,”,’ecb’,”);

$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);

$ks = mcrypt_enc_get_key_size($td);

@mcrypt_generic_init($td, $key, $iv);

$decrypted = mdecrypt_generic($td, $encrypted);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

$y=$this->pkcs5_unpad($decrypted);

return $y;

}

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);

}

function PaddingPKCS7($data) {

$block_size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC);

$padding_char = $block_size – (strlen($data) % $block_size);

$data .= str_repeat(chr($padding_char),$padding_char);

return $data;

}

}用法:

$crypt = new Crypt3Des(‘密钥’);

$code = “加密后的字符串”;

echo $crypt->decrypt($code);

echo出来的就是结果

PHP如何实现AES加解密

PHP如何实现AES加解密

makeKey("china"); // key $ciphertext = "0123456789abcdef"; //明文 $ct=$aes->blockEncrypt($ciphertext, $key); $cpt=$aes->blockDecrypt($ct,$key); echo("CipherText: $ct PlainText: $cpt "); ?> 下载地址: http://sgboards.mirrors.phpclasses.org/browse/package/3650.html

php的3des加密结果与java不一致

php的3des加密结果与java不一致

这个曾经研究过一点,如果你有php段完整的加密源代码,那么还是有可能做到结果一致的,否则很难,因为虽然都叫3des,但里面却有多种算法,比如php加密时是否使用了向量等等

求一个3des加解密Verilog程序

#if !defined(_CRYPT3DES_H)

#define _CRYPT3DES_H

#if !defined(ED_FLAG)

#define ED_FLAG

#define encrypt 0

#define decrypt 1

#endif

#ifndef _WINDOWS_

#include “windows.h”

#endif

//////////////////////////////////////////////////////////////////////////

/*

unsigned char key[8] = {“doks”};

unsigned char buff[8] = {“abcdef”};

花丁羔股薏噶割拴公茎 C3DES des;

des.DoDES3(0,buff,key);

des.DoDES3(1,buff,key);

*/

/* 3DES Class. */

class C3DES

{

public:

BOOL DoDES3(int nWay,unsigned char* pSrc,int nSrcSize,unsigned char* pDes,unsigned char pKey[8]);

private:

BOOL DoDES3(

unsigned char EDFlag, //EDFlag是加\脱密标志,0表示加密,1表示脱密

unsigned char databuf[8], //DataBuf将被处理的明文或密文的缓冲区,并兼作输出缓冲区

unsigned char keybuf[8] //8byte的密钥缓冲区

);

inline void pro_key(void);

为什么3DES的中间部分是解密而不是加密

为了让3DES的使用者能够解密原来单重DES使用者加密的数据(与原来的DES兼容)

急!! php 调用库函数 mcrypt – get – block – size 无效

那你再看看 php.ini 的配置中 ;extension=php_mcrypt.dll 这一句前面有没有分号,如果有就把它去掉,不要有分号 ,然后重启 apache 或 IIS 等web服务

如何生成3des密钥

Des的密钥是8个字节,但实际上只有7个用上,也就是56位。

3des是用3个或2个des密钥加密一串明文,最少112位最多168位。也就是14~21个字母或数字符号。

从安全性上来说密钥位数不足是不能加密的,但有些软件为了保证用户可用,会自动使用某种策略自动填充满,一般是重复填充或采用特定字符,如果你只填了1234作为密钥,有可能真正用于加密的密钥是123412341234123412341或者123400000000000000000类似的。

另外请注意,最好去做3des的密钥位数不是7或8,因为des的加密解密是同一个过程,这样搞在填充后实际上是只使用了一次des加密••••••还不如5位6位好••••••

如果是你编程时碰到的问题,把你的源码发来看看再说。

为什么3des的中间部分采用了解密而不是加密

这样做的好处是当你用同样的key(即k1=k2=k3=k)带入E(k3,D(k2,E(k1,m)))时,里面两层的D和E消去,3DES就会退化为一个普通的DES.

知道3DES如何自编噶,告诉我.

这个网页中有很多中国结的编织方法: http://www.taizhou.name/Chinese-knot/index.htm 水锦囊 –中国结组和结 如意扇 -中国结组和结 两圈盘长结 –复杂结 袈裟结 –复杂结 蝴蝶–复杂结 蝴蝶(小)–复杂结 发簪发饰结–复杂结 杯垫 –复杂结 玉结 钮扣结 云雀结 平结 龟背结 梅花结 环扣结 蛇结 藻井结 吉祥结 草花结 十字结 万字结 同心结 八字结 双环结 三环节 秘鲁结 双扣结 攀缘结 盘长结 团锦结

到底什么是3倍DES

就是价钱贵三倍 再看看别人怎么说的.