怎么才能在PHP里解密SQL Server 的encryptbypassphrase加密的字符串?????

diablox0147 2015-07-23 12:41:07
大家好,
我想在SQL SERVER里加密然后通过发送加密后的字符串到php里,之后再由php解密

但是在php里解密之后返回的却是乱码...


SQL Server里是这样加密的:
select encryptbypassphrase('secretKey','Hello World')
--> 0x0100000023E0B078CC86A273E5C47FA76887FF2D8CEE788940E79723D69ECE483DF2707F

declare @bin varbinary(MAX)
set @bin=0x0100000023E0B078CC86A273E5C47FA76887FF2D8CEE788940E79723D69ECE483DF2707F
select cast(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(MAX)');
--> AQAAACPgsHjMhqJz5cR/p2iH/y2M7niJQOeXI9aezkg98nB/

declare @str varchar(MAX);
set @str = 'AQAAACPgsHjMhqJz5cR/p2iH/y2M7niJQOeXI9aezkg98nB/';
select cast(N'' as xml).value('xs:base64Binary(sql:variable("@str"))', 'varbinary(MAX)');
--> 0x0100000023E0B078CC86A273E5C47FA76887FF2D8CEE788940E79723D69ECE483DF2707F

select convert(varchar,decryptbypassphrase('secretKey',0x0100000023E0B078CC86A273E5C47FA76887FF2D8CEE788940E79723D69ECE483DF2707F))
--> Hello World


PHP里我是这样解密的:
<?php
$base64_encoded = "AQAAACPgsHjMhqJz5cR/p2iH/y2M7niJQOeXI9aezkg98nB/";//发送过来的数据
$base64_decoded = base64_decode($base64_encoded);

$binary_of_encryptbypassphrase = "";
foreach(str_split($base64_decoded) as $c){
$hex = (sprintf("%X", ord($c)));
if(strlen($hex) == 1){
$hex = '0'.$hex;
}
$binary_of_encryptbypassphrase .= $hex;
}
echo $binary_of_encryptbypassphrase;//到这里我就重新转换回与SQLSERVER里显示出来的结果是一样的。

//然后我想解密。。。但是结果却是乱码
$decoded = trim(mcrypt_decrypt(MCRYPT_3DES, 'secretKey', $binary_of_encryptbypassphrase, MCRYPT_MODE_CBC));

echo ($decoded);
?>


解密后显示的却是乱码...

到底该怎么才能在PHP里解密由SQL SERVER通过encryptbypassphrase加密的数据呢?
...全文
276 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
diablox0147 2015-07-23
  • 打赏
  • 举报
回复
顶回去。。。真的需要帮助

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧