| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖, 2 人收藏
标题:加密程序为何+32 才显示可打印字符
只看楼主 加入收藏
lmm20090501
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2014-8-28
结帖率:66.67%
收藏(2)
已结贴  问题点数:20 回复次数:1 
加密程序为何+32 才显示可打印字符
Private Sub Command1_Click()
    cleartext = Text1.Text
    If Len(cleartext) = 0 Then
        cleartext = "": Text2.Text = ""
        Exit Sub                                    
     End If
 Dim tmpbuf() As Byte
Dim inval As Long, xorval As Long, outval As Long
Dim i As Long, j As Long

Randomize (Rnd((-1) * Abs(keycode) * Len(cleartext)))   '生成固定序列组

tmpbuf = StrConv(cleartext, vbFromUnicode) '-----------tmpbuf转成西文单字节

For i = LBound(tmpbuf) To UBound(tmpbuf)
    xorval = Int(128 * Rnd) '----------------------------固定的整数组,0-128之间不含128
    inval = Int(tmpbuf(i))   ' ---------------------------对原码的ANSI码提取码的字符值
    tmpbuf(i) = converttoprintablechar(xorval, inval Xor xorval)   '对输入的密码进行加密inval Xor xorval

Next i

ciphertext = StrConv(tmpbuf, vbUnicode)
Text2.Text = ciphertext                             '加密后的字符串   
End Sub
Private Function converttoprintablechar(ByVal xorval As Long, ByVal calaval As Long) As Byte
    Dim k As Long, i As Long
    For i = 32 To 126     '-------------------------可打印字符是32-126之间,含32,126
        If (i Xor xorval) < calaval Then            '可打印字符与固定序列随机数逐个XOR
            k = k + 1
        End If
    Next i      
    converttoprintablechar = CByte(32 + k) '------------------为什么+32      
End Function
以上程序是加密程序,返回值为什么要+32???不解????
搜索更多相关主题的帖子: 加密 
2014-08-28 21:55
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:14 
32 是 空格 的 ASCII 值。

《32 的,是控制字符,不可以显示。(有例外)
》32 的,才是能显示的字符。WIN平台一般情况下不支持超过 128 的字符显示。

授人于鱼,不如授人于渔
早已停用QQ了
2014-08-29 08:35
快速回复:加密程序为何+32 才显示可打印字符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032858 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved