<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>验证 &#8211; Simon</title>
	<atom:link href="https://www.luisimon.com/tag/%E9%AA%8C%E8%AF%81/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.luisimon.com</link>
	<description>blog</description>
	<lastBuildDate>Tue, 28 May 2024 07:21:47 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://www.luisimon.com/wp-content/uploads/2019/09/cbrks-x5t4i-001.ico</url>
	<title>验证 &#8211; Simon</title>
	<link>https://www.luisimon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>關於驗證中國公民身份証號碼算法代碼實現</title>
		<link>https://www.luisimon.com/2020/01/19/231/</link>
		
		<dc:creator><![CDATA[Simon]]></dc:creator>
		<pubDate>Sun, 19 Jan 2020 14:35:48 +0000</pubDate>
				<category><![CDATA[編程三兩事]]></category>
		<category><![CDATA[中国公民身份证]]></category>
		<category><![CDATA[身份证]]></category>
		<category><![CDATA[验证]]></category>
		<guid isPermaLink="false">https://www.luisimon.xyz/?p=231</guid>

					<description><![CDATA[由於中國公民的身份証號碼是由18位數字（最後一位可能是X，代表10）組成，人們在輸入自己的身份證號碼容易出錯。 ... <a title="關於驗證中國公民身份証號碼算法代碼實現" class="read-more" href="https://www.luisimon.com/2020/01/19/231/" aria-label="继续阅读關於驗證中國公民身份証號碼算法代碼實現">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow"><p>由於中國公民的身份証號碼是由18位數字（最後一位可能是X，代表10）組成，人們在輸入自己的身份證號碼容易出錯。所以，作爲開發者應該按照算法進行校驗，可以將輸錯身份證號碼的幾率降低到<em>千萬分之一</em> <em>（</em> <em>不可能完全確保準確 </em> <em>）</em></p></blockquote>



<p><strong>以下是檢驗算法（javascript）:</strong></p>



<pre class="wp-block-code"><code>//code:身份証號碼
function VerifyIdNumber(code){
	//debugger
	if(code.length!=18){
		return false;
	}
	var rex=/^\d{17}&#91;0-9xX]{1}$/;
	if(rex.test(code)==false){
		return false;
	}
	var factor=&#91;];//Wi
	for(var i=0;i&lt;18;i++){
		factor.push(Math.pow(2,i)%11);
	}
	var codeArray=&#91;];
	codeArray = code.split("").reverse();
	var numberArray=&#91;];//Ai
	for(var i=0;i&lt;codeArray.length;i++){
		if(codeArray&#91;i].toLowerCase()=="x"){
			numberArray.push(10);
		}else{
			numberArray.push(Number(codeArray&#91;i]));
		}
	}
	var sums=0;//和
	for(var i=0;i&lt;numberArray.length;i++){
		sums+=numberArray&#91;i]*factor&#91;i];
	}
	return sums%11==1;
}</code></pre>



<p><strong>C#版本:</strong></p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: csharp; title: ; notranslate">
        /// &lt;summary&gt;
        /// 验证身份证是否正确合理
        /// Author:Lui
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;cardNumber&quot;&gt;身份证号&lt;/param&gt;
        /// &lt;returns&gt;&lt;/returns&gt;
        public static bool ValidIdCard(this string cardNumber)
        {
            if (cardNumber.Length != 18)
            {
                return false;
            }
            var rex = &quot;^\\d{17}&#91;0-9xX]{1}$&quot;;
            if (Regex.IsMatch(cardNumber, rex) == false)
            {
                return false;
            }
            var factor = new double&#91;18];//Wi
            for (var i = 0; i &lt; 18; i++)
            {
                factor&#91;i] = (Math.Pow(2, i) % 11);
            }
            char&#91;] codeArray = cardNumber.Reverse().ToArray();
            int&#91;] numberArray = new int&#91;18];//Ai
            for (var i = 0; i &lt; codeArray.Length; i++)
            {
                if (codeArray&#91;i].ToString().ToLower() == &quot;x&quot;)
                {
                    numberArray&#91;i] = (10);
                }
                else
                {
                    numberArray&#91;i] = (int.Parse(codeArray&#91;i].ToString()));
                }
            }
            var sum = 0d;//和
            for (var i = 0; i &lt; numberArray.Length; i++)
            {
                sum += numberArray&#91;i] * factor&#91;i];
            }
            return sum % 11 == 1;
        }
</pre></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
