Option Explicit
Public key(1 To 3) As Long
Private Const base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Public Sub GenKey()Sub GenKey()
Dim d As Long, phi As Long, e As Long
Dim m As Long, x As Long, q As Long
Dim p As Long
Randomize
On Error GoTo top
top:
p = Rnd * 1000 1
If IsPrime(p) = False Then GoTo top
Sel_q:
q = Rnd * 1000 1
If IsPrime(q) = False Then GoTo Sel_q
n = p * q 1
phi = (p - 1) * (q - 1) 1
d = Rnd * n 1
If d = 0 Or n = 0 Or d = 1 Then GoTo top
e = Euler(phi, d)
If e = 0 Or e = 1 Then GoTo top
x = Mult(255, e, n)
If Not Mult(x, d, n) = 255 Then
DoEvents
GoTo top
ElseIf Mult(x, d, n) = 255 Then
key(1) = e
key(2) = d
key(3) = n
End If
End Sub
Public Function Euler()Function Euler(ByVal a As Long, ByVal b As Long) As Long
On Error GoTo error2
r1 = a: r = b
p1 = 0: p = 1
q1 = 2: q = 0
n = -1
Do Until r = 0
r2 = r1: r1 = r
p2 = p1: p1 = p
q2 = q1: q1 = q
n = n + 1
r = r2 Mod r1
c = r2 r1
p = (c * p1) + p2
q = (c * q1) + q2
Loop
s = (b * p1) - (a * q1)
If s > 0 Then
x = p1
Else
x = (0 - p1) + a
End If
Euler = x
Exit Function
error2:
Euler = 0
End Function
Public Function Mult()Function Mult(ByVal x As Long, ByVal p As Long, ByVal m As Long) As Long
y = 1
On Error GoTo error1
Do While p > 0
Do While (p / 2) = (p 2)
x = (x * x) Mod m
p = p / 2
Loop
y = (x * y) Mod m
p = p - 1
Loop
Mult = y
Exit Function
error1:
y = 0
End Function
本文来自 280文秘网(https://www.it280.com),转载请保留网址和出处
【VBBase64编码类代码】相关文章:
2018国家电网新大纲财会类市场模拟卷多选题(二)05-15
2016年职称英语综合类阅读判断练习八05-15
07年4月北师大“中国古代文学史(一)”串讲(5)05-15
盐阜大众报报业集团(盐城)公开招聘《东方生活报》编辑记者的公告 2月25日到3月3日报名05-15
职称英语考试卫生类C级补全短文05-15
类风湿性关节炎病人标准护理工作计划05-15
唐代史馆研究论文05-15
2016年职称英语考试《综合A类》基础语法辅导(4)05-15
法国实用及紧急电话号码05-15
2024山西省直事业单位职位表:中小学教师类(D类)岗位下载05-15
动作技能的分类05-15
