关于php的 des加密

2013-12-18 14:34:45 +08:00
 yakczh
<?php
$key = "thisiskey";

function encrypt($encrypt) {
global $key;
$encrypt = pkcs5_pad($encrypt);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_RAND);
$passcrypt = mcrypt_encrypt(MCRYPT_DES, $key, $encrypt, MCRYPT_MODE_CBC, $iv);
$encode = base64_encode($passcrypt);
return $encode;
//return bin2hex($passcrypt);
}

function pkcs5_pad($text)
{
$len = strlen($text);
$mod = $len % 8;
$pad = 8 - $mod;
return $text.str_repeat(chr($pad),$pad);
}

echo encrypt('thisistext');
exit;

运行结果是 VX2gnZbjSLVU5an1Z97GIw==

但是最后结果跟 http://www.tero.co.uk/des/code.php 上的des加密算法输出不一样
用tero这个网址所用的代码运行
<?php
error_reporting(E_ALL ^E_NOTICE);
$key = "thisiskey";
$message = "thisistext";
$ciphertext = des ($key, $message, 1, 0, null,'');
echo "DES Test Encrypted: " . base64_encode ($ciphertext);

结果 是 DES Test Encrypted: PzsmwkLug7E0Me2iHC+LHg==

有没有高手来看一下问题出在哪里?
2889 次点击
所在节点    程序员
2 条回复
Keyes
2013-12-18 17:41:20 +08:00
PHP我看不太懂,但是就DES看来,DES CBC是8字节一个block进行加密的,要不楼主确认一下不足8字节的数据你是拿什么填充的?
yakczh
2013-12-18 21:15:14 +08:00
@Keyes DES 加密算法中的 初始化向量 是不就是一个用来与数据异或的 数据列表?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/93634

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX