首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让“密钥生成器”知道这个公式

如何让“密钥生成器”知道这个公式
EN

Stack Overflow用户
提问于 2014-10-31 03:32:44
回答 2查看 248关注 0票数 0

我有检查9个整数的公式,

第一个数字(D1)必须是: 1、2、5、6、8或9最后一个数字(D9)必须是:0或9 9xd1+8xd2+7xd3+6xd4+5xd5+4xd6+3xd7+2xd8+d9模数11 =0

我可以“验证”密钥,但是在知道正确的条件的情况下,我如何生成更多的密钥呢?

如何从0到9生成9个不同的整数,并在此公式下检查它们?

感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2014-10-31 03:52:34

  1. 随机生成前7位数,计算这些位数的公式。
  2. 将第9位数的值设置为9,并根据导致公式结果mod 11 =0的公式结果的mod将第8位数的值添加到formula.
  3. Calculate。
  4. 对于尝试执行此操作导致mod 11 =9的例外情况,请将第9位数设置为0。

实施:

代码语言:javascript
复制
Private randGen As New Random()

Function GenNum() As Integer
   Dim digits(0 To 8) As Integer
   GenNum = 0
   Dim checkSum As Integer
   digits(0) = randGen.Next(6) + 1
   If digits(0) >= 3 Then digits(0) += 2
   If digits(0) >= 7 Then digits(0) += 1
   checkSum += digits(0) * 9
   For d As Integer = 1 To 6
      digits(d) = randGen.Next(10)
      checkSum += digits(d) * (9 - d)
   Next
   digits(8) = 9
   checkSum += digits(8)
   If (checkSum Mod 11) Mod 2 = 1 Then
      digits(7) = (11 - (checkSum Mod 11)) \ 2
   Else
      digits(7) = ((12 - (checkSum Mod 11)) \ 2 + 4) Mod 10
   End If
   checkSum += digits(7) * 2
   If checkSum Mod 11 = 9 Then digits(8) = 0
   Dim pow10 As Integer = 1
   For d As Integer = 8 To 0 Step -1
      GenNum += pow10 * digits(d)
      pow10 *= 10
   Next
End Function
票数 1
EN

Stack Overflow用户

发布于 2014-12-15 05:37:35

我可以帮助你生成从0到9的整数。

下面是您的表单应该是什么样子:

下面是代码:

代码语言:javascript
复制
Public Class Form1
Dim NumRandom As Random = New Random
Dim X, Y, Z As Integer

Private Sub GenerateBUT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GenerateBUT.Click
    Dim a(9), i, j, RN As Integer
    Dim flag As Boolean
    flag = False
    i = 1
    a(j) = 1
    Do While i <= 9
        Randomize()
        RN = CInt(Int(9 * Rnd()) + 1)
        For j = 1 To i
            If (a(j)) = RN Then
                flag = True
                Exit For
            End If
        Next
        If flag = True Then
            flag = False
        Else
            a(i) = RN
            i = i + 1S
        End If
    Loop
    Label1.Text = a(1)
    Label2.Text = a(2)
    Label3.Text = a(3)
    Label4.Text = a(4)
    Label5.Text = a(5)
    Label6.Text = a(6)
    Label7.Text = a(7)
    Label8.Text = a(8)
    Label9.Text = a(9)
    Z = Label4.Text
    Y = Label5.Text
    X = Z + Y
    X = X - Label3.Text
    If X > 1 And X < 10 Then
        X = NumRandom.Next(1, 7)
        If X = 1 Then
            Label1.Text = "0"
        ElseIf X = 2 Then
            Label2.Text = "0"
        ElseIf X = 3 Then
            Label3.Text = "0"
        ElseIf X = 4 Then
            Label4.Text = "0"
        ElseIf X = 5 Then
            Label5.Text = "0"
        ElseIf X = 6 Then
            Label6.Text = "0"
        ElseIf X = 7 Then
            Label7.Text = "0"
        End If
    End If
End Sub

结束类

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26661754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档