2016-12-21 3 views
0

과 일치되지 닷넷PHP 암호화는 asp.net 암호화 여기

public string GetMD5Hash(string name) { 
    MD5 md5 = new MD5CryptoServiceProvider(); 
    byte[] ba = md5.ComputeHash(Encoding.UTF8.GetBytes(name)); 
    StringBuilder hex = new StringBuilder(ba.Length * 2); 

    foreach (byte b in ba) 
     hex.AppendFormat("{0:x2}", b); 
    return Convert.ToString(hex); 
} 

및 PHP에서 I는 다음 코드

class foobar { 

    public function str2hex($string) { 
     $hex = ""; 
     for ($i = 0; $i < strlen($string); $i++) 
      $hex .= (strlen(dechex(ord($string[$i]))) < 2) ? "0" . dechex(ord($string[$i])) : dechex(ord($string[$i]));  
     return $hex; 
    } 

    public function GetMD5($pStr) { 
     $data = mb_convert_encoding($pStr, 'UTF-16LE', 'UTF-8'); 
     $h = $this->str2hex(md5($data, true)); 
     return $h; 
    } 
} 

$foobar = new foobar; 
$nisha =$foobar->GetMD5('5698882'); 
echo "</br>"; 
echo $nisha; 

되지만 출력을 사용하고의 코드 .net 암호화 출력과 일치하지 않습니다. 모두 이 다릅니다.

답변

0

생성자 PHP에서 문자열의 md5 해시를 먹고, 당신은 단순히

PHP .NET 및 PHP는 모두 동일합니다 MD5 해시를 얻을 수 http://php.net/manual/en/function.md5.php

에서 md5() 기능에게 당신은이 코드를 사용하여 더 많은 정보를 사용할 필요가 MD5 해시

<?php 
echo md5('abcdefghijklmnopqrstuvwxyz'); 
?> 

결과 -> c3fcd3d76192e4007dfb496cca67e13b

.NET의 MD5 해시

public string CalculateMD5Hash(string input) 

{ 

    // step 1, calculate MD5 hash from input 

    MD5 md5 = System.Security.Cryptography.MD5.Create(); 

    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input); 

    byte[] hash = md5.ComputeHash(inputBytes); 


    // step 2, convert byte array to hex string 

    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < hash.Length; i++) 

    { 

     sb.Append(hash[i].ToString(“x2”)); 

    } 

    return sb.ToString(); 

} 

결과 - 자신의 코드를 변경할 수 없습니다 귀하의 회신 릭하지만 .NET 개발자> c3fcd3d76192e4007dfb496cca67e13b

+0

감사합니다. 그게 우리가 위의 .net 코드를 PHP로 복제 할 수 있습니까? –

+0

문자열에 abcdefghijklmnopqrstuvwxyz 문자열을 사용하여 md5 해시를 부여 할 수 있습니까? –