在python中生成IMEI

2023-12-27

你好,我正在尝试在 python 中创建一个函数来生成有效的 IMEI 号码,所以这是我的函数。IMEI 验证使用 Luhn 算法,所以我尝试在我的脚本中实现它。

def getImei():
    num = ''
    suma = 0
    for i in range(0,13):
        digit = random.randrange(0,9)
        suma = suma + digit
        num = num + str(digit)

    suma = suma * 9
    digit = suma % 10
    num = num + str(digit)
    return num

然而,该函数无法生成有效的 IMEI 号码。我在维基百科上找到了一篇文章,告诉我如何生成校验位(http://en.wikipedia.org/wiki/Luhn_algorithm http://en.wikipedia.org/wiki/Luhn_algorithm )

校验位 (x) 是通过计算数字之和,然后计算该值的 9 倍模 10(以等式形式,(67 * 9 mod 10))获得的。 以算法形式: 1.计算数字之和(67)。 2.乘以 9 (603)。 3.最后一位数字3是校验位。

是我遗漏了什么还是维基有误?


请注意,奇数(从末尾开始,从 0 开始)位置的数字会加倍,因此您必须将其添加到代码中,例如以下代码将返回 luhn 校验和:

def luhn_residue(digits):
    return sum(sum(divmod(int(d)*(1 + i%2), 10))
                 for i, d in enumerate(digits[::-1])) % 10

Here (1 + i%2)乘数等于2对于奇数位置的数字,以及1为均匀定位。然后sum(divmod(..., 10))返回(可能)两位数字的数字总和,以及结果序列的外部总和。

您可以使用它来生成有效的数字序列:

def getImei(N):
    part = ''.join(str(random.randrange(0,9)) for _ in range(N-1))
    res = luhn_residue('{}{}'.format(part, 0))
    return '{}{}'.format(part, -res%10)

Demo:

>>> luhn_residue('79927398713')
0
>>> luhn_residue('05671564547361')
6
>>> luhn_residue(getImei(14))
0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在python中生成IMEI 的相关文章

随机推荐

  • 使用 Numpy 数组进行 Pandas MultiIndex 查找

    我正在使用代表图形的 pandas DataFrame 数据帧由指示节点端点的 MultiIndex 进行索引 Setup import pandas as pd import numpy as np import itertools as
  • Ruby 中的 base64 编码字符串中的奇怪 \n

    Ruby 中内置的 Base64 库添加了一些 n 我无法找出原因 对于这个特殊的例子 irb main 001 0 gt require rubygems gt true irb main 002 0 gt require base64
  • 为什么通过同一 COM 对象的不同接口检索的 IUnknown* 指针具有相同的值?

    我有以下 COM 接口层次结构和实现它们的类 interface IX public IUnknown interface IY public IUnknown class CA public IX public IY Here class
  • 在 Shopify 中选中自定义复选框时更改产品价格

    当选择自定义复选框时 我需要能够更改产品价格 我想为一种产品添加 10 00 美元的雕刻费用 为其他产品的雕刻费用添加 20 美元 我无法将其添加为 Shopify 中的变体 因为它们根据变体处理库存 我正在使用 Debut 主题 我有在液
  • 动态添加/覆盖property属性的setter和getter

    我需要使用 模仿语法糖语法在子类中动态装饰 getter 和 setter 对方法 我正在努力解决 setter 的实现问题 class A def init self x print init self x x property def
  • Loopj Android 异步 Http - onFailure 未触发

    我正在使用来自loopj的很棒的异步http库 但是我遇到了一个小障碍 如果用户没有互联网连接或失去连接 应用程序将不会返回任何内容 这部分是预期的 但它也不会触发 onFailure 方法 另外 我在有互联网连接时使用的代码确实有效 因此
  • Xcode 8 在 Interface Builder 中扭曲和拉伸图像

    在 Xcode 图像资源文件夹中添加了 3 个 PNG 文件 1x 2x 3x 使用图像向 Interface Builder 添加按钮时 它看起来扭曲仅在界面生成器中 这在 Xcode 7 中工作得很好 有谁知道我需要做什么来解决这个问题
  • Nodejs Passport - 使用多种 Google 策略

    我不确定这是否可行 但我想使用多个 Google 策略 以便根据链接 用户使用一组不同的范围 我创建了两个单独的护照变量 passport require passport passport2 require passport 我将它们设置
  • 使用字母数字子集生成 1M 个唯一随机密钥

    我想生成 1M 个随机 出现的 唯一字母数字密钥并将它们存储在数据库中 每个密钥的长度为 8 个字符 并且仅使用子集 abcdefghijk n pqrstuvxyz 和 0 9 字母 l m o 和 w 被丢弃 由于印刷空间有限 m 和
  • javascript/jquery 中是否有等效的 PHP date() ? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试计算一年中的某一天 无论是今天还是其他日期 在 PHP 中 我可以使用 date 函数并做任
  • 编写库(而不是应用程序)时如何处理异常 - Java

    我目前正在为 RESTful Web 服务 API 编写 Java 包装器 我现在正在尝试清理一些异常处理 但不确定采取什么方法 这是一个供 Java 程序员使用的工具 因此我无法像处理最终用户应用程序那样真正处理它 如果我有一个方法 连接
  • 如何替换元胞数组中的元素?

    我有一个元胞数组 A NaN k m n 我想用 NaN 替换除 A 的第三个元素之外的所有元素以获得 B NaN NaN m NaN 请对我如何解决这个问题有任何帮助 建议吗 另外 是否可以通过一行代码来完成此操作 您可以创建一个所有 N
  • 使用Random.range生成级别no而不重复

    我尝试使用递归来解决手头的问题 如下所示 int newlevelgen int exampleno Random Range 1 4 if exampleno lastlevelno lastlevelno exampleno retur
  • Sling 重写器的工作原理说明

    我想了解 sling url 重写是如何工作的 我正在关注这个网址 http www cognifide com blogs cq multidomain cq mappings and apache configuration http
  • 自托管 WCF 服务无法通过 WCFTestClient 进行测试

    我正在尝试使用 WCFTestClient 测试我的自托管 wcf 服务 我收到这样的错误 错误 无法从中获取元数据http localhost 2303 MyService http localhost 2303 MyService如果这
  • Django 模型字段。自定义字段值设置器

    有没有办法在 django 自定义属性设置器中执行这样的操作 class MyModel models Model myfield models CharField length 250 myfield setter def set pas
  • 读取 COBOL 中的 STDIN (SYSIN)

    我想从 COBOL 中的 STDIN 又名 SYSIN 中读取行 现在我只想把它们打印出来 这样我就知道我已经拿到了它们 从我读到的所有内容看来 这应该有效 IDENTIFICATION DIVISION PROGRAM ID APP EN
  • 无法解析 ApplicationModule 的参数:(?)

    对 Angular 来说还很陌生 我的应用程序包含 1 个服务和 3 个组件 编译成功 我收到此错误 但不知道出了什么问题 未捕获的错误 无法解析 ApplicationModule 的所有参数 Debugging gave me very
  • 使用 oembed 端点获取 Instagram 的视频媒体源

    上下文 我有一段 jQuery ajax 代码 直到最近几周左右 它已经愉快地工作了大约 9 个月 此代码使用 Instagram 的嵌入端点 http instagram com developer embedding 这使我能够从正常的
  • 在python中生成IMEI

    你好 我正在尝试在 python 中创建一个函数来生成有效的 IMEI 号码 所以这是我的函数 IMEI 验证使用 Luhn 算法 所以我尝试在我的脚本中实现它 def getImei num suma 0 for i in range 0