<?phpclass Sign{
static function mySign($para,$key,$secret)
{
$para_filter = self::paraFilter($para);
$para_sort = self::argSort($para_filter);
$mysign = self::buildMysign($para_sort, $key,$secret);
return $mysign;
}
static function paraFilter($para) {
$para_filter = array();
foreach($para as $key=>$value){
if($key == "sign" || $key == "filter" || $value == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
static function argSort($para) {
ksort($para);
reset($para);
return $para;
}
static function buildMysign($sort_para,$key,$secret) {
$prestr=$key;
$prestr = $prestr.self::createLinkstring($sort_para);
$prestr = $prestr.$secret;
//$prestr= utf8_encode( $prestr);
$mysign = strtoupper(sha1($prestr));
return $mysign;
}
static function createLinkstring($para) {
$arg = "";
foreach ($para as $key=>$value){
$arg .= $key.$value;
}
return $arg;
}
}
?>PHPC#
static function mySign($para,$key,$secret)
{
$para_filter = self::paraFilter($para);
$para_sort = self::argSort($para_filter);
$mysign = self::buildMysign($para_sort, $key,$secret);
return $mysign;
}
static function paraFilter($para) {
$para_filter = array();
foreach($para as $key=>$value){
if($key == "sign" || $key == "filter" || $value == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
static function argSort($para) {
ksort($para);
reset($para);
return $para;
}
static function buildMysign($sort_para,$key,$secret) {
$prestr=$key;
$prestr = $prestr.self::createLinkstring($sort_para);
$prestr = $prestr.$secret;
//$prestr= utf8_encode( $prestr);
$mysign = strtoupper(sha1($prestr));
return $mysign;
}
static function createLinkstring($para) {
$arg = "";
foreach ($para as $key=>$value){
$arg .= $key.$value;
}
return $arg;
}
}
?>PHPC#
解决方案 »
- 一句C#代码 变成 vb.net代码 望高手指点
- 编译成dll后调用的问题
- RegisterStartupScript
- Socket 客户端IP地址问题
- 菜鸟问题---问一个方法返回的问题
- 新手请教有关怎么用Serializable,将类储存到文件
- 默认网页被修改.注册表不能手动打开(出现提示:'注册表被管理员禁用')
- 求解,如何解决在WINFORM中重复打开同一个窗口的问题
- C#同行们:请教一个初学问题。在线等!
- 如何在TabControl的tabpage上的text上点击右键时 将鼠标位置的TabPage设为SelectedTab
- 如何使得 一个Form的弹出不影响另一个Form
- 关于MSDN帮助文档,管理的疑问
{
public static string mySign(Dictionary<string, string> para, string key, string secret)
{
var para_filter = paraFilter(para); var para_sort = argSort(para_filter); var mysign = buildMysign(para_sort, key, secret); return mysign;
} private static Dictionary<string, string> paraFilter(Dictionary<string, string> para)
{
var para_filter = new Dictionary<string, string>(); foreach (var item in para)
{
if (item.Key.Equals("sign") || item.Key.Equals("filter") || item.Value.Equals("")) continue;
para_filter.Add(item.Key, item.Value);
}
return para_filter;
} private static Dictionary<string, string> argSort(Dictionary<string, string> para)
{
return para.OrderBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value); } private static string buildMysign(Dictionary<string, string> sort_para, string key, string secret)
{
var prestr = key; prestr = prestr + createLinkstring(sort_para); prestr = prestr + secret; //$prestr= utf8_encode( $prestr); SHA1 sha = new SHA1CryptoServiceProvider();
string mysign = BitConverter.ToString(sha.ComputeHash(Encoding.UTF8.GetBytes(prestr))).ToUpper(); return mysign;
} private static string createLinkstring(Dictionary<string, string> para)
{
string arg = "";
foreach (var item in para)
{
arg += item.Key + item.Value;
} return arg;
}
}