注册 登录
编程论坛 VB6论坛

有没有大神在帮忙看一下,想写一个加密程序,把数字加密成对应字母,但是出来的结果只能加密1位数字

起个名好难 发布于 2018-10-20 15:03, 4963 次点击
Private Sub Command2_Click()
Dim str1 As String, str2 As String
Dim i As Integer, ch As String * 1
str1 = Text1.Text

For i = 1 To Len(str1)

  ch = Mid(str1, i, 1)
  
  Select Case ch
    Case 0: str2 = "n"
    Case 1: str2 = "p"
    Case 2: str2 = "m"
    Case 3: str2 = "x"
    Case 4: str2 = "b"
    Case 5: str2 = "l"
    Case 6: str2 = "7"
    Case 7: str2 = "g"
    Case 8: str2 = "e"
    Case 9: str2 = "w"
  End Select
  
  
    str2 = str2 + ch
  
  Next i
  str2 = StrReverse(str2)
  
  Text2.Text = str2
11 回复
#2
wlrjgzs2018-10-20 16:03
程序代码:

Private Sub Command2_Click()
  Dim str1 As String, str2 As String
  Dim i As Integer, ch As String
  str1 = Text1.Text
  For i = 1 To Len(str1)
    ch = Mid(str1, i, 1)
    Select Case ch
      Case 0: str2 = "n"
      Case 1: str2 = "p"
      Case 2: str2 = "m"
      Case 3: str2 = "x"
      Case 4: str2 = "b"
      Case 5: str2 = "l"
      Case 6: str2 = "7"
      Case 7: str2 = "g"
      Case 8: str2 = "e"
      Case 9: str2 = "w"
    End Select
    str2 = str2 & ch    //这里把+换成&
  Next i
  str2 = StrReverse(str2)
  Text2.Text = str2
End Sub
#3
起个名好难2018-10-20 16:45
回复 2楼 wlrjgzs
还是不对   加密出来还是只加密最后一位数
#4
起个名好难2018-10-20 16:47
回复 2楼 wlrjgzs
只有本站会员才能查看附件,请 登录
#5
wds12018-10-20 18:33
1、 ch = Mid(str1, i, 1) ch为字符型
2、 Select Case ch
   Case 0 为数值型
3、 如果内容为123
  Select Case ch
  Case "0"
  Case "1"
  Case "2"
  或者
  Select Case val(ch)
  Case 0
  case 1
4、如果内容为字符p,q
  case "p"对应处理就行
 case "q"
 你的程序select case 根本就没执行到内部,ch只是最后取得字符



[此贴子已经被作者于2018-10-20 18:35编辑过]

#6
yingshu2018-10-20 21:49
Private Sub Command2_Click()
  Dim str1 As String
  Dim str2 As String
 dim temp as string
  Dim i As Integer
  dim ch(9) As String
  ch(0)="n",ch(1)="p",ch(2)= "m",ch(3)"x",ch(4)="b",ch(5)="c",ch(6)="d",ch(7)="ne",ch(8)="f",ch(9)="g"
  str1 = Text1.Text
  For i = 1 To Len(str1)
   temp = Mid(str1, i, 1)
      str2=str2&ch(val(temp))
    Next i
   Text2.Text = str2
End Sub

''''str2=“n”,每次判断后重新赋值,之前的判断结果没有保存,所以结果只能保存最后一位
'''赋值语句改为str2=str2&“n”,噢啦,妥妥滴,

知识有限,仅供参考,希望对你有帮助

[此贴子已经被作者于2018-10-20 22:00编辑过]

#7
ZHRXJR2018-10-21 05:48
只有本站会员才能查看附件,请 登录

程序代码:
Private Sub Command1_Click()
  Dim Strx As String, chx As String, I As Integer, CH
  CH = Array("n", "p", "m", "x", "b", "t", "s", "g", "e", "w")   '修改了二个字符 l-t 7-s
  For I = 1 To Len(Text1.Text)
   chx = Mid(Text1.Text, I, 1)
      Strx = Strx & CH(Val(chx))
    Next I
   Text2.Text = Strx
End Sub

上面程序使用数组存储转换字符,然后取出数字,以数字对应数组的值转换为字符

[此贴子已经被作者于2018-10-21 07:02编辑过]

#8
起个名好难2018-10-21 21:05
回复 7楼 ZHRXJR
非常感谢  我试过了  很完美  
#9
nmcfbgttyl2018-11-05 20:52
回复 7楼 ZHRXJR
您好,怎样再反转换回来呢,就是再把字母转换成数字,谢谢您!
#10
yingshu2018-11-05 22:44
同样的数组,
遍历数组
判断相符,取其索引
字符链接


标准的数组查询



[此贴子已经被作者于2018-11-5 22:47编辑过]

#11
ZHRXJR2018-11-06 04:10
逆向编程将可以了呀
只有本站会员才能查看附件,请 登录

程序代码:

Dim CH

Private Sub Command1_Click()
Dim Strx As String, chx As String, I As Integer
  For I = 1 To Len(Text1.Text)
   chx = Mid(Text1.Text, I, 1)
      Strx = Strx & CH(Val(chx))
    Next I
   Text2.Text = Strx
End Sub

Private Sub Command2_Click()
Dim Strx As String, chx As String, I As Integer, J As Integer
  For I = 1 To Len(Text2.Text)
   chx = Mid(Text2.Text, I, 1)   '得到单个字符
   For J = 0 To 9
    If chx = CH(J) Then    '历遍数组 CH 判断是哪个字符。
        Strx = Strx & J   '检测当前字符在数组中的位置。
    End If
   Next J
    Next I
   Text3.Text = Strx
End Sub

Private Sub Form_Load()
CH = Array("n", "p", "m", "x", "b", "t", "s", "g", "e", "w")
End Sub


数组变量 CH 是模块级数组变量。
#12
起个名好难2018-11-10 16:49
我自己实现的方法是取ascii码
1