|

楼主 |
发表于 2021-8-25 07:29
|
显示全部楼层
本帖最后由 ysr 于 2021-8-26 04:35 编辑
Private Sub Command1_Click()
Dim a, n
n = Trim(Text1)
ts = Timer
If Len(n) < 11 Then
Text2 = fenjieyinzi(Trim(n))
If InStr(Text2, "*") = 0 Then
Text2 = "这是素数,有" & Len(n) & "位,用时" & Timer - ts & "位"
Else
Text2 = "*这是合数,有" & Len(n) & "位,用时" & Timer - ts & "秒"
End If
Else
n1 = MPC(Trim(n), 1)
a = 3
'a为明文
a1 = zzxc(Trim(n), Trim(a))
If Val(a1) > 1 Then
Text2 = a1 & "*这是合数,有" & Len(n) & "位,用时" & Timer - ts & "秒"
Else
c = 999
'c为公约
Do While zzxc(Trim(n1), Trim(c)) > 1
c = Val(c - 1)
Loop
d = qniyuan(Trim(c), Trim(n1))
'd为逆元为私钥
a2 = qksmimo(Trim(a), Trim(c), Trim(n))
'a2为密文
a3 = qksmimo(Trim(a2), Trim(d), Trim(n))
If MBJC(Trim(a3), Trim(a)) = 0 Then
Text2 = "这是素数有" & Len(n) & "位,用时" & Timer - ts & "秒"
Else
Text2 = "*这是合数,有" & Len(n) & "位,用时" & Timer - ts & "秒"
End If
End If
End If
End Sub
明文的长度是1位数是可行的,原理是有效的,当然某些特殊值比如0和1都是不行的。 |
|