Правильный IMEI алгоритм LUNA

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Возможно кому то будет интересно прочитать wiki

Ну а суть простая. возможно кто то знает JS и поможет допилить найденное решение на просторах инета...

JS:
function imei_gen(){var pos;var str=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var sum=0;var final_digit=0;var t=0;var len_offset=0;var len=15;var issuer;var rbi=["01","10","30","33","35","44","45","49","50","51","52","53","54","86","91","98","99"];var arr=rbi[Math.floor(Math.random()*rbi.length)].split("");str[0]=Number(arr[0]);str[1]=Number(arr[1]);pos=2;while(pos<len-1){str[pos++]=Math.floor(Math.random()*10)%10;}
len_offset=(len+1)%2;for(pos=0;pos<len-1;pos++){if((pos+len_offset)%2){t=str[pos]*2;if(t>9){t-=9;}
sum+=t;}
else{sum+=str[pos];}}
final_digit=(10-(sum%10))%10;str[len-1]=final_digit;t=str.join('');t=t.substr(0,len);document.getElementById('imei_num').value=t;}
 

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
114
Баллы
43
Есть на C#
C#:
// https://ru.wikipedia.org/wiki/Алгоритм_Луна#C#
public static bool checkLuhn(string data)
{
    int sum = 0;
    int len = data.Length;
    for (int i = 0; i < len; i++)
    {
        int add = (data[i] - '0') * (2 - (i + len) % 2);
        add -= add > 9 ? 9 : 0;
        sum += add;
    }
    return sum % 10 == 0;
}
 
  • Спасибо
Реакции: baracuda и westruk

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
114
Баллы
43
А как сделать такой же, но для СНИЛС - описание правил проверки ?
C#:
// https://ru.wikipedia.org/wiki/Контрольное_число#Страховой_номер_индивидуального_лицевого_счёта_(Россия)
public static bool checkSnils(string data)
{
    int sum = 0;
    int len = data.Length - 2;
    for (int i = 0; i < len; i++) sum += (data[i] - '0') * (len - i);   
    if (sum % 101 == 100) sum = 0;
    return sum % 101 == (data[len] - '0') * 10 + (data[len + 1] - '0');
}
 
  • Спасибо
Реакции: bigloafer

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Где купить булочки арбатские ?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)