📄 rsa.frm
字号:
VERSION 5.00
Object = "{10336011-AB2C-11D4-8E1C-00002100DD42}#4.0#0"; "MWAX.OCX"
Begin VB.Form RSA
Caption = "RSA"
ClientHeight = 6270
ClientLeft = 60
ClientTop = 345
ClientWidth = 7695
LinkTopic = "Form1"
MaxButton = 0 'False
ScaleHeight = 6270
ScaleWidth = 7695
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton RSA
Caption = "RSA"
Height = 495
Left = 2760
TabIndex = 0
Top = 3600
Width = 2415
End
Begin MWAX.MWactiveX MW
Left = 0
Top = 0
_ExtentX = 2990
_ExtentY = 1508
End
End
Attribute VB_Name = "RSA"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Form_Load()
Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
mbRet = MW.Com_Open(geU_Com1, geU_Baud9600)
If Not mbRet Then MsgBox MW.Errshow
End Sub
Private Sub Form_Unload(Cancel As Integer)
mbRet = MW.Com_Close
If Not mbRet Then MsgBox MW.Errshow
End Sub
Private Sub RSA_Click()
'上卡座
Dim psRet As String
Dim psMw As String
mbRet = MW.Reset
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Delete
If Not mbRet Then MsgBox MW.Errshow
'建MF
mbRet = MW.Create_File(geU_CreateMF, "FFFFFFFFFFFFFFFF0f011234567890")
If Not mbRet Then MsgBox MW.Errshow
'建EF(定长记录文件)
mbRet = MW.Create_File(geU_CreateEF, "00030a0f000092") '公钥文件
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Create_File(geU_CreateEF, "00040b0f000157") '私钥文件
If Not mbRet Then MsgBox MW.Errshow
'建结束MF
mbRet = MW.Create_File(geU_CreateEndMF, "")
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Select_File(geU_SelectEF, "0003")
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Select_File(geU_SelectEF, "0004")
If Not mbRet Then MsgBox MW.Errshow
'mbRet = mw.Generate_RSAkey(geU_64BitKey, "00040003")
'mbRet = mw.Hash_Data("12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", psRet)
If Not mbRet Then MsgBox MW.Errshow
Dim pbIn(150) As Byte
Dim pbOut(150) As Byte
'写公钥文件
'C1 06 C00813000002(类型说明)
mbRet = MW.Asc_To_Hex("C106C00813000002", pbIn(0), 8)
mbRet = MW.Update_Binary(geU_Data, "83", 0, 8, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C1 81 00 + N(128字节)
mbRet = MW.Asc_To_Hex("C18100dec87b331c037a804a3017caf2448e41c9d4ead3e5b4006b51cc43536813d907922fe8ae976516ab3301ff77a3017b41ffbacd7c4c1cdfd49ae4bea5599c2b4d5963a54e194e186a94f27c72bdaa36a9fcee11c063204d7f9914ac0ec25fd4caf3ab0d6cf99ec4df10423efc55271120b03101350ac40487cf307bf256df79d1", pbIn(0), 131)
mbRet = MW.Update_Binary(geU_Data, "83", 8, 131, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C1 05 00 + E(4字节)
mbRet = MW.Asc_To_Hex("C1050000010001", pbIn(0), 7)
mbRet = MW.Update_Binary(geU_Data, "83", 139, 7, pbIn())
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Read_Binary("83", 130, 16, pbOut())
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Hex_To_Asc(pbOut(0), psRet, 16)
'写私钥文件
'C2 06 C10813000005(类型说明)
mbRet = MW.Asc_To_Hex("C206C10813000005", pbIn(0), 8)
mbRet = MW.Update_Binary(geU_Data, "84", 0, 8, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C2 41 00 + Q(64字节)
mbRet = MW.Asc_To_Hex("C24100ff3b177a34334375297b2d3b2537437f763d783d3e7b717335331338393f2279157f793f027d103e5b7f443a10313a702a792f7c1977173f0d356f74037312a3", pbIn(0), 67)
mbRet = MW.Update_Binary(geU_Data, "84", 8, 67, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C2 41 00 + P (64字节)
mbRet = MW.Asc_To_Hex("C24100df745b3f3470497b053b657f327f5b75633c5d7f067a247f40330e7f7d7b187f5d362135347c4b7b6c3257796e745579597a103f477f7c75553d223b297a3cfb", pbIn(0), 67)
mbRet = MW.Update_Binary(geU_Data, "84", 75, 67, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C2 41 00 + QU(64字节)
mbRet = MW.Asc_To_Hex("C24100288dcb664810f43322978577dff28977f89adbbbb941a12fb3f3347acc0f8d6fcea268ec183075b594dc335c0fbfb72224cf529b3cce1e9443fefedb6cab6951", pbIn(0), 67)
mbRet = MW.Update_Binary(geU_Data, "84", 142, 67, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C2 41 00 + DQ(64字节)
mbRet = MW.Asc_To_Hex("C24100be7f4967a19c7d85ee1f0cc46f638f128c9b16aa877f354f2aeee3327cafddb8084eab9d56eb277b93692af03773b6cd4f364235daffe32ee159f7c4dc6a4007", pbIn(0), 67)
mbRet = MW.Update_Binary(geU_Data, "84", 209, 67, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'C2 41 00 + DP(64字节)
mbRet = MW.Select_File_Psam(geU_SelectEF, "0004")
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.Asc_To_Hex("C24100be2f0756752838b236d2c5e10bb6afbdea773f5054cff26e47d2ecbcffac9c3e12b476711539d0f8bc2ee09a9eb2eee8b88a1677f53f814b500017396964fbaf", pbIn(0), 67)
mbRet = MW.Update_Binary(geU_Data, "01", 20, 67, pbIn())
If Not mbRet Then MsgBox MW.Errshow
'此函数中加密的数据为128字节.
mbRet = MW.RSA_Crypt_OR_RSA_Verify("0003", "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456", psRet)
If Not mbRet Then MsgBox MW.Errshow
mbRet = MW.RSA_Decrypt_OR_RSA_Sign("0004", psRet, psMw)
If Not mbRet Then MsgBox MW.Errshow
'反向签名.
'mbRet = mw.RSA_Decrypt_OR_RSA_Sign("0004", "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456", psRet)
'If Not mbRet Then MsgBox mw.ErrShow
'此函数中加密的数据为128字节.
'mbRet = mw.RSA_Crypt_OR_RSA_Verify("0003", psRet, psMw)
'If Not mbRet Then MsgBox mw.ErrShow
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -