无聊,写了这个算法玩玩。千万别拿去干坏事哦!
view plaincopy to clipboardprint?
string GetNewCardID(string cardID)//只能输入15位、17位、18位的身份证号码
{
int len = cardID.Length,sum=0;
if (len < 15 || len == 16 || len > 18) return cardID;//输入有误,返回原值
string newCardID = cardID;
int[] pairValue = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };//前17位的权值
string parityBit = "10X98765432";//校验码
if (len == 15) newCardID = cardID.Substring(0, 6) + "19" + cardID.Substring(6);
if (len == 18) newCardID = newCardID.Substring(0, 17);
for (int i = 0; i < 17; i++)
{
char ch = newCardID[i];
sum += int.Parse(ch.ToString()) * pairValue[i]; //每位数字*相应的权值
}
newCardID += parityBit[sum % 11];//和取模,得到校验位
return newCardID;
}
string GetNewCardID(string cardID)//只能输入15位、17位、18位的身份证号码
{
int len = cardID.Length,sum=0;
if (len < 15 || len == 16 || len > 18) return cardID;//输入有误,返回原值
string newCardID = cardID;
int[] pairValue = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };//前17位的权值
string parityBit = "10X98765432";//校验码
if (len == 15) newCardID = cardID.Substring(0, 6) + "19" + cardID.Substring(6);
if (len == 18) newCardID = newCardID.Substring(0, 17);
for (int i = 0; i < 17; i++)
{
char ch = newCardID[i];
sum += int.Parse(ch.ToString()) * pairValue[i]; //每位数字*相应的权值
}
newCardID += parityBit[sum % 11];//和取模,得到校验位
return newCardID;
}
0 评论:
发表评论