2010-02-01 4 views
2

누구든지 다음 함수에서 사용되는 체크섬 알고리즘의 공식/공식 이름을 알고 있습니까?이 체크섬 알고리즘의 이름은 무엇입니까?


function Checksum($number, $encode = true) 
{ 
    if ($encode === true) 
    { 
     $result = 0; 
     $number = str_split($number, 1); 

     foreach ($number as $value) 
     { 
      $result = ($result + ord($value) - 48) * 10 % 97; 
     } 

     return implode('', $number) . sprintf('%02u', (98 - $result * 10 % 97) % 97); 
    } 

    else if ($number === Checksum(substr($number, 0, -2), true)) 
    { 
     return substr($number, 0, -2); 
    } 

    return false; 
} 

function ifMB($entity, $reference, $amount = 0.00) 
{ 
    $stack = 923; 
    $weights = array(62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3); 
    $argument = str_split(sprintf('%03u%04u%08u', $entity, $reference, round($amount * 100)), 1); 

    foreach ($argument as $key => $value) 
    { 
     $stack += $value * $weights[$key]; 
    } 

    return sprintf('%03u%04u%02u', $entity, $reference, 98 - ($stack % 97)); 
} 

감사합니다!

답변

5

이 자리 문자열 전사 할 때 사람들이 만드는 실수의 다양한 일반적인 종류의 감지하도록 설계 ISO7604에 기재된 오류 정정 코드의 두 자리 숫자 (대신 예를 들어, 1324 전치 잘못 한 자리

  • 얻기

    • 을 추가 또는 숫자

    알고리즘을 놓치게 1234)

  • 의 대부분은 은행 계좌 번호 확인에 사용됩니다,하지만 당신은 그것을 사용할 수 있습니다 거의 모든 숫자 열.

    참고 :

  • +0

    (일부 근거와 ISO 표준 페이지) 여러 곳에서 사용되며 IBAN과 관련된 것은 없습니다. 내 질문에 다른 예를 추가했습니다. –

    +0

    OK, 대답을 조금 수정했습니다. – Grandpa