深夜脑洞,写了一个可以推算火车票身份证号码的小程序

1. 火车票上*号打的是月,日,理论上的有最大366种组合;

2. 校验码是最后的一位,0-9及X,11个结果;

3. 那么,通过火车票上的身份证号,可以得到33个左右真正的有效身份证号;

4. 如果你能知道对方的星座(嗯,大家不是经常曝自己是什么星座么),那么,再将这30多个结果映射到12个星座中,最终可能性只有2-3个。。。

5. 结论:晒车票,一定要打码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Geyunfei.CheckID
{
    class Program
    {

        static int[] a = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
        static char[] b = new char[] { ‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘ };
        static int index = 0;
        static void Main(string[] args)
        {

            System.Console.WriteLine("输入火车票上的身份证号:");

            String a = System.Console.ReadLine();
            var year = int.Parse(a.Substring(6, 4));
            var beginDate = new DateTime(year, 1, 1);
            var chk = a.Substring(14);

            int days = 365;
            if (DateTime.IsLeapYear(year))
                days++;
            for(int i =0;i<days; i++)
            {
                var chkDate = beginDate.AddDays(i).ToString("MMdd");
                var id = a.Substring(0, 10) + chkDate + chk;
                CheckID(id);

            }

        }

        private static void CheckID(string id)
        {
            int sum = 0;
            for(int i = 0; i < 17; i++)
            {
                sum += int.Parse(id[i].ToString()) * a[i];
            }
            var chk = b[sum % 11];
            if (chk == id[17])
            {
                index++;
                Console.WriteLine(getAstro(int.Parse(id.Substring(10,2)),int.Parse(id.Substring(12,2)))+ index.ToString() +" "+id);
            }
        }

        private static String getAstro(int month, int day)
        {
            String[] starArr = {"魔羯座","水瓶座", "双鱼座", "牡羊座",
        "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座" };
            int[] DayArr = { 22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22 };  // 两个星座分割日
            int index = month;
            // 所查询日期在分割日之前,索引-1,否则不变
            if (day < DayArr[month - 1])
            {
                index = index - 1;
            }
            index = index % 12;
            // 返回索引指向的星座string
            return starArr[index];
        }

    }
}

  

时间: 2024-12-04 23:44:16

深夜脑洞,写了一个可以推算火车票身份证号码的小程序的相关文章

用cefsharp写了一个保存网页为单文件html的小工具

折腾了两天,用cefsharp写成了一个保存网页为单文件html的小工具. 主要功能嘛 就是把自己感觉有用的网页保存下来,保存为一个单独的html文件. 特点嘛就是可以在保存前做一些裁剪. 见下图: 热键F11 裁剪到选中部分(也就是只保留选中部分,其它的全删除掉), 热键F12 删除掉选中部分. 文件被自动保存到C盘下的一个目录: 如果不想要图片,可以一键把页面上的图片删除掉.如下图: 查看源文件,可以发现其中的图片都是使用base64字符串方式保存的. 工具栏上[清理]的功能是删除掉 scr

动手开发一个名为“微天气”的微信小程序(上)

引言:在智能手机软件的装机量中,天气预报类的APP排在比较靠前的位置.说明用户对天气的关注度很高.因为人们无论是工作还是度假旅游等各种活动都需要根据自然天气来安排.跟着本文开发一个"微天气"小程序,方便微信网友随时查看天气.接下来两天小编将同您一起开发一个"微天气"小程序,本文首先向大家介绍"微天气"的API与界面代码编写.本文选自<从零开始学微信小程序开发>. 在一套软件系统中,微信小程序通常是作为前端来使用的,一般还需要有后端的系

自己写了一个类似百度空间自动保存草稿的程序 php+jquery

可以异步加载mysql中的草稿~,异步更新草稿列表~ 下载地址:http://download.csdn.net/source/3479156 代码: demo.php <?php mysql_connect("localhost","root","root"); mysql_select_db("test"); mysql_query("SET CHARACTER SET GB2312"); if(

Python 一个抓取糗百的段子的小程序

import requests import re #糗事百科爬虫类 class QSBK: #初始化方法,定义一些变量 def __init__(self): self.headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36" } #存放段子的变量,每一

VS 星期作业 if else的应用 做一个受不受异性欢迎的小程序

1 static void Main(string[] args) 2 { 3 //漏掉代码 输入错误 进行提示! 4 5 string T1, T2, T3, T4, T5, T6, T7, T8, T9, T10=""; 6 Console.BackgroundColor=ConsoleColor.Yellow; 7 Console.ForegroundColor = ConsoleColor.Cyan; 8 Console.WriteLine("************

设计一个自动生成棋盘格子的JS小程序

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script type="text/javascript"> 7 8 function chessboard(){ 9 rows=document.getElementById("text1").val

一个Java写的批量重命名文件小程序

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣.比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟. import java.io.File; import java.sql.Date; import java.util.Scanner; public class RenameTool { boolean useDefaultName = false; boolean useDefa

C++写一个排列组合小程序

今天突然想到一个问题,有时候,针对同一个事件有多种反映,特别是游戏AI当中,这种情况下需要采取最适合的方案,哪种方案最适合,可以将每种方案的结果或影响都计算一遍,从而选择最合适的.最基本就是一个排列组合方法,将各种方案都组合出来.于是写了一个基本的N个数排列组合小程序! 开发工具:Visual Studio 2012 CTestPermutation::~CTestPermutation() { cout<<">>>>>>>>>&

python爬虫学习之用Python抢火车票的简单小程序

利用Python制作自动抢火车票小程序,过年再也不要担心没票了! 前言 每次过年很多人都会因为抢不到火车票而回不了家,所以小编利用Python写了一个自动抢火车票的工具,希望大家能抢到火车票,回家过个好年! 我本来想自己写一个练练手的,但是转眼一想,Python 本身最大的优势是什么,不就是有很多牛逼的人已经造好轮子了吗?你只需要知道这些轮子并会使用就行了,这样会节省你大量的精力和时间,而且站在巨人的肩膀上,会看得更远.于是我在 github 上一搜索,果然有不少抢票程序,有的是 Python2