010-52863266 

中国审计网欢迎您 , 为您提供专业的审核课程

用工匠精神       圆心中那个梦

新闻动态 真实、正向、传递价值

当前位置:首页 > 新闻动态

最新资讯 News

谈编码数据审计的分析技巧

来源: | 作者: | 发布时间: 2022-04-02 | 930 次浏览 | 🔊 点击朗读正文 ❚❚ | 分享到:
 在审计数据分析实践中,审计人员常遇到诸多的编码数据字段,这些字段的编码往往内置了一套固有的规则,或者具备一定的规律,审计人员可以利用所了解的规则或规律,对这些字段进行分析,从而实现一定的分析目标。
  
  身份证号码是编码数据的典型代表。众所周知,18位身份证号码包括行政区划代码(6位)、出生日期(8位)、序号(3位)和校验位(1位)组成,其中序号末位为单数的是男性,为双数的是女性,校验位由前17位经特定校验算法生成,取值范围为0-9和X。本文抛砖引玉,试以身份证号码的分析为例,给出编码数据的一些分析技巧。
  
  分析一:15位旧身份证号码转换为18位新身份证号码  
  首先将旧号码左起第6位后添加“19”生成为17位数字,然后计算校验位,下面是其校验位计算的一种方法。
  (1)17位数字本体码加权求和:S=Sum(Ai*Wi),
  其中,i是17位数字小数点前(右起)的第i数位,如i=1代表个位;Ai表示相应位置上的数值;Wi表示相应位置上的加权因子,且Wi=mod(2i,11);
  (2)对加权和除以11求模:Y=mod(S,11);
  (3)得出校验位:当Y=0或1,校验位=1-Y;当Y=2,校验位=X;其他情况下,校验位=12-Y。
  
  据以上算法,使用SQL实现旧身份证号码的转换函数:
  create function [dbo].[f_CID15to18] (@sfz char(18))
  returns char(18)
  as
  begin
      declare @osfz varchar(18)
      declare @i int,@ai int,@wi int,@sum int,@mod int,@result int
      set @osfz=@sfz
      set @sum=0
      IF len(@osfz)=15      --若为15位旧身份证号码
      begin
          set @osfz=substring(@osfz,1,6) + '19' + substring(@osfz,7,9)
          set @i=1
          while @i <=17                                             
          begin
              set @ai=cast(substring(@osfz,18 - @i,1) as int)
              set @wi=POWER (2, @i)% 11
              set @sum=@sum + @ai * @wi
              set @i=@i + 1
          end
          set @mod=  @sum % 11
          set @result=12 - @mod

联系我们 Contact US

  •   公司地址: 北京市海淀区永定路乙1号 

      电话号码:010-52863266

      传真号码:010-89294300

      E-mail:zhongshenpei@126.com