高分求帮忙, HMACSHA1问题

2002pine 2014-07-09 12:42:05
我不会perl,我要做一个加密的程序。
请哪位高手帮我下,告诉我digest最后的值是多少

或者大家给我一个C#的 可以和下面同样值的函数



$challenge'='27c81c82d52252c2fd0567e859df3c31';
$key='xyzxyz';

$ascii_key = pack "H*", $portal_secret;
$login_params='res=success'+'&challenge=$challenge'
my $digest = `echo -n "$login_params" | openssl dgst -sha1 -hmac "$ascii_key"`;
$digest =~ s/[\n\r\s]+$//;
$digest= substr($digest,-40,40);


我用的是,可惜结果不样,请高手帮忙
public static string HashUTF8(string keyStr,string sourceStr)

{
byte[] key = System.Text.Encoding.UTF8.GetBytes(keyStr);
HMACSHA1 hmac = new HMACSHA1(key);
// Convert the input string to a byte array and compute the hash.
byte[] data = hmac.ComputeHash(Encoding.UTF8.GetBytes(sourceStr));

// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();

// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}

// Return the hexadecimal string.
return sBuilder.ToString();
}
...全文
250 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
2002pine 2014-07-11
  • 打赏
  • 举报
回复
顶顶顶顶顶顶
save4me 2014-07-11
  • 打赏
  • 举报
回复
我在11楼的解释还有什么问题吗?
引用 13 楼 2002pine 的回复:
顶顶顶顶顶顶
宝_爸 2014-07-10
  • 打赏
  • 举报
回复
原来是perl啊。
宝_爸 2014-07-09
  • 打赏
  • 举报
回复
我也不太懂php,我有个简单的运行环境,你的代码无法运行 Parse error: syntax error, unexpected '"H*"' (T_CONSTANT_ENCAPSED_STRING) in C:\wamp\www\test.php on line 7 已经修正了 $challenge'='27c81c82d52252c2fd0567e859df3c31'; 到 $challenge='27c81c82d52252c2fd0567e859df3c31';
save4me 2014-07-09
  • 打赏
  • 举报
回复
按照他的代码,我也得到他一样的输出,但是执行的时候有出错信息,$login_params=0而不是$login_params=res=success&challenge=27c81c82d52252c2fd0567e859df3c31。你可以问一下他是不是这样的情况。
引用
Argument "&challenge=$challenge" isn't numeric in addition (+) at test.pl line 11. Argument "res=success" isn't numeric in addition (+) at test.pl line 11. $challenge=27c81c82d52252c2fd0567e859df3c31 $portal_secret=xyzxyz $login_params=0 $digest=b4ee506a96a31c0b3a2f0e1a486e7472054979da
引用 10 楼 2002pine 的回复:
怎么回事阿, 另外一个人给我的却是 b4ee506a96a31c0b3a2f0e1a486e7472054979da
2002pine 2014-07-09
  • 打赏
  • 举报
回复
怎么回事阿, 另外一个人给我的却是 b4ee506a96a31c0b3a2f0e1a486e7472054979da
save4me 2014-07-09
  • 打赏
  • 举报
回复
$challenge=27c81c82d52252c2fd0567e859df3c31 $portal_secret=xyzxyz $login_params=res=success&challenge=27c81c82d52252c2fd0567e859df3c31 $digest=c87dbf5a1dc648f5d3a4d61e806dafd1bb70cddf

#!/usr/bin/perl -w

my $challenge='27c81c82d52252c2fd0567e859df3c31';
my $portal_secret='xyzxyz';

my $ascii_key=pack "H*", $portal_secret;
my $login_params='res=success&challenge='.$challenge;

my $digest=`echo -n "$login_params" | openssl dgst -sha1 -hmac "$ascii_key"`;
$digest =~ s/[\n\r\s]+$//;
$digest= substr($digest,-40,40);

print "\$challenge=".$challenge."\n";
print "\$portal_secret=".$portal_secret."\n";
print "\$login_params=".$login_params."\n";
print "\$digest=".$digest."\n";
宝_爸 2014-07-09
  • 打赏
  • 举报
回复
引用 7 楼 2002pine 的回复:
对就是这个,请把digest的结果打给我看,谢谢
最后一个是致命错误,我不太懂php,不知道怎么改。
2002pine 2014-07-09
  • 打赏
  • 举报
回复
对就是这个,请把digest的结果打给我看,谢谢
宝_爸 2014-07-09
  • 打赏
  • 举报
回复
很多错误: ( ! ) Warning: pack(): Type H: illegal hex digit x in C:\wamp\www\test.php on line 5 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 2 0.0000 243768 pack ( ) ..\test.php:5 ( ! ) Warning: pack(): Type H: illegal hex digit y in C:\wamp\www\test.php on line 5 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 2 0.0000 243768 pack ( ) ..\test.php:5 ( ! ) Warning: pack(): Type H: illegal hex digit z in C:\wamp\www\test.php on line 5 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 2 0.0000 243768 pack ( ) ..\test.php:5 ( ! ) Warning: pack(): Type H: illegal hex digit x in C:\wamp\www\test.php on line 5 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 2 0.0000 243768 pack ( ) ..\test.php:5 ( ! ) Warning: pack(): Type H: illegal hex digit y in C:\wamp\www\test.php on line 5 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 2 0.0000 243768 pack ( ) ..\test.php:5 ( ! ) Warning: pack(): Type H: illegal hex digit z in C:\wamp\www\test.php on line 5 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 2 0.0000 243768 pack ( ) ..\test.php:5 ( ! ) Notice: Use of undefined constant s - assumed 's' in C:\wamp\www\test.php on line 8 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 ( ! ) Fatal error: Undefined constant 'n\r\s' in C:\wamp\www\test.php on line 8 Call Stack # Time Memory Function Location 1 0.0000 243264 {main}( ) ..\test.php:0 代码稍微改了些编译错误,目前是

<?php
	 $challenge='27c81c82d52252c2fd0567e859df3c31';
	 $portal_secret='xyzxyz';

	 $ascii_key = pack("H*", $portal_secret);
	 $login_params='res=success'+'&challenge=$challenge';
	 $digest='echo -n "$login_params" | openssl dgst -sha1 -hmac "$ascii_key"';
	 $digest =~ s/[\n\r\s]+$//;
	 $digest= substr($digest,-40,40); 
	
	
	phpinfo();
?>
2002pine 2014-07-09
  • 打赏
  • 举报
回复
这个是我写的C#,但是结果和perl中的不同,这就是我要问的问题 谢谢
save4me 2014-07-09
  • 打赏
  • 举报
回复
如果你只是要求HMACSHA的话,可以在线转换HMAC Example,同时页面上也提供C#代码 message: res=success&challenge=27c81c82d52252c2fd0567e859df3c31 key: xyzxyz 结果: 1505CF318234845647E3A222F9A368169AA17A63
2002pine 2014-07-09
  • 打赏
  • 举报
回复
对不起不是 $key='xyzxyz'; 而是$portal_secret='xyzxyz' 别外如果执行了,请把$digest的值贴出来 非常感谢
宝_爸 2014-07-09
  • 打赏
  • 举报
回复
$portal_secret也没有定义。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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